...

Source file src/github.com/Azure/go-autorest/autorest/adal/token_legacy.go

Documentation: github.com/Azure/go-autorest/autorest/adal

     1  //go:build !go1.13
     2  // +build !go1.13
     3  
     4  // Copyright 2017 Microsoft Corporation
     5  //
     6  //  Licensed under the Apache License, Version 2.0 (the "License");
     7  //  you may not use this file except in compliance with the License.
     8  //  You may obtain a copy of the License at
     9  //
    10  //      http://www.apache.org/licenses/LICENSE-2.0
    11  //
    12  //  Unless required by applicable law or agreed to in writing, software
    13  //  distributed under the License is distributed on an "AS IS" BASIS,
    14  //  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    15  //  See the License for the specific language governing permissions and
    16  //  limitations under the License.
    17  
    18  package adal
    19  
    20  import (
    21  	"context"
    22  	"net/http"
    23  	"time"
    24  )
    25  
    26  func getMSIEndpoint(ctx context.Context, sender Sender) (*http.Response, error) {
    27  	tempCtx, cancel := context.WithTimeout(ctx, 2*time.Second)
    28  	defer cancel()
    29  	req, _ := http.NewRequest(http.MethodGet, msiEndpoint, nil)
    30  	req = req.WithContext(tempCtx)
    31  	q := req.URL.Query()
    32  	q.Add("api-version", msiAPIVersion)
    33  	req.URL.RawQuery = q.Encode()
    34  	return sender.Do(req)
    35  }
    36  
    37  // EnsureFreshWithContext will refresh the token if it will expire within the refresh window (as set by
    38  // RefreshWithin) and autoRefresh flag is on.  This method is safe for concurrent use.
    39  func (mt *MultiTenantServicePrincipalToken) EnsureFreshWithContext(ctx context.Context) error {
    40  	if err := mt.PrimaryToken.EnsureFreshWithContext(ctx); err != nil {
    41  		return err
    42  	}
    43  	for _, aux := range mt.AuxiliaryTokens {
    44  		if err := aux.EnsureFreshWithContext(ctx); err != nil {
    45  			return err
    46  		}
    47  	}
    48  	return nil
    49  }
    50  
    51  // RefreshWithContext obtains a fresh token for the Service Principal.
    52  func (mt *MultiTenantServicePrincipalToken) RefreshWithContext(ctx context.Context) error {
    53  	if err := mt.PrimaryToken.RefreshWithContext(ctx); err != nil {
    54  		return err
    55  	}
    56  	for _, aux := range mt.AuxiliaryTokens {
    57  		if err := aux.RefreshWithContext(ctx); err != nil {
    58  			return err
    59  		}
    60  	}
    61  	return nil
    62  }
    63  
    64  // RefreshExchangeWithContext refreshes the token, but for a different resource.
    65  func (mt *MultiTenantServicePrincipalToken) RefreshExchangeWithContext(ctx context.Context, resource string) error {
    66  	if err := mt.PrimaryToken.RefreshExchangeWithContext(ctx, resource); err != nil {
    67  		return err
    68  	}
    69  	for _, aux := range mt.AuxiliaryTokens {
    70  		if err := aux.RefreshExchangeWithContext(ctx, resource); err != nil {
    71  			return err
    72  		}
    73  	}
    74  	return nil
    75  }
    76  

View as plain text