github.com/rahart/packer@v0.12.2-0.20161229105310-282bb6ad370f/builder/azure/arm/authenticate.go (about) 1 // Copyright (c) Microsoft Corporation. All rights reserved. 2 // Licensed under the MIT License. See the LICENSE file in builder/azure for license information. 3 4 package arm 5 6 import "github.com/Azure/go-autorest/autorest/azure" 7 8 type Authenticate struct { 9 env azure.Environment 10 clientID string 11 clientSecret string 12 tenantID string 13 } 14 15 func NewAuthenticate(env azure.Environment, clientID, clientSecret, tenantID string) *Authenticate { 16 return &Authenticate{ 17 env: env, 18 clientID: clientID, 19 clientSecret: clientSecret, 20 tenantID: tenantID, 21 } 22 } 23 24 func (a *Authenticate) getServicePrincipalToken() (*azure.ServicePrincipalToken, error) { 25 return a.getServicePrincipalTokenWithResource(a.env.ResourceManagerEndpoint) 26 } 27 28 func (a *Authenticate) getServicePrincipalTokenWithResource(resource string) (*azure.ServicePrincipalToken, error) { 29 oauthConfig, err := a.env.OAuthConfigForTenant(a.tenantID) 30 if err != nil { 31 return nil, err 32 } 33 34 spt, err := azure.NewServicePrincipalToken( 35 *oauthConfig, 36 a.clientID, 37 a.clientSecret, 38 resource) 39 40 return spt, err 41 }