Skip to content

Commit

Permalink
Use expired tokens with refresh tokens
Browse files Browse the repository at this point in the history
  • Loading branch information
lawrencegripper committed Jul 17, 2018
1 parent fe4e024 commit 68a3922
Showing 1 changed file with 14 additions and 5 deletions.
19 changes: 14 additions & 5 deletions azurerm/helpers/authentication/access_token.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@ type AccessToken struct {
}

func findValidAccessTokenForTenant(tokens []cli.Token, tenantId string) (*AccessToken, error) {
mostRecentAccessToken := AccessToken{}
foundToken := false
for _, accessToken := range tokens {
token, err := accessToken.ToADALToken()
if err != nil {
Expand All @@ -28,11 +30,16 @@ func findValidAccessTokenForTenant(tokens []cli.Token, tenantId string) (*Access
return nil, fmt.Errorf("Error parsing expiration date: %q", accessToken.ExpiresOn)
}

if expirationDate.UTC().Before(time.Now().UTC()) {
log.Printf("[DEBUG] Token %q has expired", token.AccessToken)
if expirationDate.UTC().Before(time.Now().UTC()) && accessToken.RefreshToken == "" {
log.Printf("[DEBUG] Token %q has expired and it doens't have a refresh token", token.AccessToken)
continue
}

if mostRecentAccessToken.AccessToken != nil &&
expirationDate.UTC().After(mostRecentAccessToken.AccessToken.Expires()) {
log.Printf("[DEBUG] Token %q has later expiration date", token.AccessToken)
}

if !strings.Contains(accessToken.Resource, "management") {
log.Printf("[DEBUG] Resource %q isn't a management domain", accessToken.Resource)
continue
Expand All @@ -43,13 +50,15 @@ func findValidAccessTokenForTenant(tokens []cli.Token, tenantId string) (*Access
continue
}

validAccessToken := AccessToken{
mostRecentAccessToken = AccessToken{
ClientID: accessToken.ClientID,
AccessToken: &token,
IsCloudShell: accessToken.RefreshToken == "",
}
return &validAccessToken, nil
foundToken = true
}
if foundToken {
return &mostRecentAccessToken, nil
}

return nil, fmt.Errorf("No Access Token was found for the Tenant ID %q", tenantId)
}

0 comments on commit 68a3922

Please sign in to comment.