Fix Azure interactive authentication

Builder looks up tenant ID before asking for token. Client config did
not allow that. Also found that token provider was not properly
initialized.

Fixes 7267
This commit is contained in:
Paul Meyer 2019-02-04 23:10:07 +00:00
parent 36546c5dfe
commit 68516fc05c
3 changed files with 18 additions and 8 deletions

View File

@ -10,7 +10,11 @@ import (
) )
func NewDeviceFlowOAuthTokenProvider(env azure.Environment, say func(string), tenantID string) oAuthTokenProvider { func NewDeviceFlowOAuthTokenProvider(env azure.Environment, say func(string), tenantID string) oAuthTokenProvider {
return &deviceflowOauthTokenProvider{} return &deviceflowOauthTokenProvider{
env: env,
say: say,
tenantID: tenantID,
}
} }
type deviceflowOauthTokenProvider struct { type deviceflowOauthTokenProvider struct {

View File

@ -155,8 +155,7 @@ func (c ClientConfig) useDeviceLogin() bool {
c.ClientID == "" && c.ClientID == "" &&
c.ClientSecret == "" && c.ClientSecret == "" &&
c.ClientJWT == "" && c.ClientJWT == "" &&
c.ClientCertPath == "" && c.ClientCertPath == ""
c.TenantID == ""
} }
func (c ClientConfig) useMSI() bool { func (c ClientConfig) useMSI() bool {

View File

@ -268,11 +268,18 @@ func getCloud() *azure.Environment {
// tests for assertRequiredParametersSet // tests for assertRequiredParametersSet
func Test_ClientConfig_CanUseDeviceCode(t *testing.T) { func Test_ClientConfig_CanUseDeviceCode(t *testing.T) {
// TenantID is optional, but Builder will look up tenant ID before requesting
t.Run("without TenantID", func(t *testing.T) {
cfg := emptyClientConfig() cfg := emptyClientConfig()
cfg.SubscriptionID = "12345" cfg.SubscriptionID = "12345"
// TenantID is optional
assertValid(t, cfg) assertValid(t, cfg)
})
t.Run("with TenantID", func(t *testing.T) {
cfg := emptyClientConfig()
cfg.SubscriptionID = "12345"
cfg.TenantID = "12345"
assertValid(t, cfg)
})
} }
func assertValid(t *testing.T, cfg ClientConfig) { func assertValid(t *testing.T, cfg ClientConfig) {