github.com/vmware/govmomi@v0.51.0/session/example_test.go (about)

     1  // © Broadcom. All Rights Reserved.
     2  // The term “Broadcom” refers to Broadcom Inc. and/or its subsidiaries.
     3  // SPDX-License-Identifier: Apache-2.0
     4  
     5  package session_test
     6  
     7  import (
     8  	"context"
     9  	"fmt"
    10  	"net/url"
    11  
    12  	_ "github.com/vmware/govmomi/lookup/simulator"
    13  	"github.com/vmware/govmomi/session"
    14  	"github.com/vmware/govmomi/simulator"
    15  	"github.com/vmware/govmomi/sts"
    16  	_ "github.com/vmware/govmomi/sts/simulator"
    17  	"github.com/vmware/govmomi/vim25"
    18  	"github.com/vmware/govmomi/vim25/soap"
    19  )
    20  
    21  func ExampleManager_LoginByToken() {
    22  	simulator.Run(func(ctx context.Context, vc *vim25.Client) error {
    23  		c, err := sts.NewClient(ctx, vc)
    24  		if err != nil {
    25  			return err
    26  		}
    27  
    28  		// Issue a bearer token
    29  		req := sts.TokenRequest{
    30  			Userinfo: url.UserPassword("Administrator@VSPHERE.LOCAL", "password"),
    31  		}
    32  
    33  		signer, err := c.Issue(ctx, req)
    34  		if err != nil {
    35  			return err
    36  		}
    37  
    38  		// Create a new un-authenticated client and LoginByToken
    39  		vc2, err := vim25.NewClient(ctx, soap.NewClient(vc.URL(), true))
    40  		if err != nil {
    41  			return err
    42  		}
    43  
    44  		m := session.NewManager(vc2)
    45  		header := soap.Header{Security: signer}
    46  
    47  		err = m.LoginByToken(vc2.WithHeader(ctx, header))
    48  		if err != nil {
    49  			return err
    50  		}
    51  
    52  		session, err := m.UserSession(ctx)
    53  		if err != nil {
    54  			return err
    55  		}
    56  
    57  		fmt.Println(session.UserName)
    58  
    59  		return nil
    60  	})
    61  	// Output: Administrator@VSPHERE.LOCAL
    62  }