@@ -13,11 +13,12 @@ import (
1313)
1414
1515const (
16- AzureSubscriptionId string = "AZURE_SUBSCRIPTION_ID "
16+ AzureTenantId string = "AZURE_TENANT_ID "
1717 AzureClientId string = "AZURE_CLIENT_ID"
1818 AzureClientSecret string = "AZURE_CLIENT_SECRET"
1919 AzureKeyVaultUrl string = "AZURE_KEY_VAULT_URL"
2020 AzureApiVersion string = "AZURE_API_VERSION"
21+ AzureToken string = "AZURE_TOKEN"
2122 AzureVaultUrl string = "https://vault.azure.net"
2223 AzureClientCredentialsGrant string = "client_credentials"
2324 MicrosoftLoginUrl string = "https://login.microsoftonline.com/"
@@ -44,49 +45,51 @@ type AzureSecretVersions struct {
4445}
4546
4647type Azure struct {
47- logger * logrus.Logger
48- Prefix string
49- KeyMapping map [string ]string
50- keyVaultUrl string
51- subscriptionId string
52- clientId string
53- clientSecret string
54- apiVersion string
55- token string
48+ logger * logrus.Logger
49+ Prefix string
50+ KeyMapping map [string ]string
51+ keyVaultUrl string
52+ tenantId string
53+ clientId string
54+ clientSecret string
55+ apiVersion string
56+ token string
5657}
5758
5859func (w * World ) Azure () * Azure {
5960 if w .azure != nil {
6061 return w .azure
6162 }
62- azureSubscriptionId := w .checkAzureEnv (AzureSubscriptionId )
63- azureClientId := w .checkAzureEnv (AzureClientId )
64- azureClientSecret := w .checkAzureEnv (AzureClientSecret )
65- azureKeyVaultUrl := w .checkAzureEnv (AzureKeyVaultUrl )
66- azureApiVersion := w .checkAzureEnv (AzureApiVersion )
63+ tenantId := os .Getenv (AzureTenantId )
64+ azureClientId := os .Getenv (AzureClientId )
65+ azureClientSecret := os .Getenv (AzureClientSecret )
66+ azureKeyVaultUrl := os .Getenv (AzureKeyVaultUrl )
67+ azureApiVersion := os .Getenv (AzureApiVersion )
68+ azureToken := os .Getenv (AzureToken )
6769
6870 if azureApiVersion == "" {
6971 azureApiVersion = "7.0"
7072 }
7173
72- w .azure = & Azure {
73- logger : w .logger ,
74- KeyMapping : make (map [string ]string ),
75- subscriptionId : azureSubscriptionId ,
76- clientId : azureClientId ,
77- clientSecret : azureClientSecret ,
78- keyVaultUrl : azureKeyVaultUrl ,
79- apiVersion : azureApiVersion ,
74+ if azureKeyVaultUrl == "" {
75+ w .logger .Warnf ("%v not set." , AzureKeyVaultUrl )
8076 }
81- return w .azure
82- }
8377
84- func (w * World ) checkAzureEnv (env string ) string {
85- value := os .Getenv (env )
86- if w .logger != nil && value == "" {
87- w .logger .Warnf ("%v not set." , env )
78+ if azureToken == "" && (tenantId == "" || azureClientId == "" || azureClientSecret == "" ) {
79+ w .logger .Warnf ("%s or %s, %s, %s needs to be set" , AzureToken , AzureTenantId , AzureClientId , AzureClientSecret )
8880 }
89- return value
81+
82+ w .azure = & Azure {
83+ logger : w .logger ,
84+ KeyMapping : make (map [string ]string ),
85+ tenantId : tenantId ,
86+ clientId : azureClientId ,
87+ clientSecret : azureClientSecret ,
88+ keyVaultUrl : azureKeyVaultUrl ,
89+ apiVersion : azureApiVersion ,
90+ token : azureToken ,
91+ }
92+ return w .azure
9093}
9194
9295func (a * Azure ) Secret (path string ) (string , error ) {
@@ -95,10 +98,6 @@ func (a *Azure) Secret(path string) (string, error) {
9598 if ! ok {
9699 mapped = path
97100 }
98- err := a .getBearerToken ()
99- if err != nil {
100- return "" , errors .Wrap (err , "could not get access token from https://login.microsoftonline.com/" )
101- }
102101 latestSecretVersion , err := a .getLatestSecretVersion (mapped )
103102 if err != nil {
104103 return "" , errors .Wrapf (err , "could not get secrets version for %s" , mapped )
@@ -124,8 +123,7 @@ func (a *Azure) getSecret(path string, secretVersion string) (string, error) {
124123}
125124
126125func (a * Azure ) getLatestSecretVersion (path string ) (string , error ) {
127- secretPath := path
128- body , err := a .doVaultRequest (fmt .Sprintf ("/secrets/%s/versions" , secretPath ))
126+ body , err := a .doVaultRequest (fmt .Sprintf ("/secrets/%s/versions" , path ))
129127 if err != nil {
130128 return "" , err
131129 }
@@ -186,7 +184,7 @@ func (a *Azure) getBearerToken() error {
186184 if err != nil {
187185 return err
188186 }
189- u .Path = fmt .Sprintf ("/%s/oauth2/token" , a .subscriptionId )
187+ u .Path = fmt .Sprintf ("/%s/oauth2/token" , a .tenantId )
190188 client := & http.Client {}
191189 r , err := http .NewRequest ("POST" , u .String (), strings .NewReader (params .Encode ()))
192190 if err != nil {
0 commit comments