在通过重定向URL授权后尝试调用两个不同的资源时,第一个调用完成,第二个调用无法使用刷新其令牌
"HTTP 401 Unauthorized"
在下面的代码中,对第二个服务的调用总是失败(即使更改调用顺序或多次调用第一个服务)
ApplicationTokenCredentials applicationTokenCredentials = new ApplicationTokenCredentials(clientId, domain, secret, AzureEnvironment.AZURE);
DelegatedTokenCredentials delegatedTokenCredentials = new DelegatedTokenCredentials(applicationTokenCredentials, redirectUrl, code);
Azure.Authenticated azureAuth = Azure.authenticate(delegatedTokenCredentials);
//First call - resource : https://management.core.windows.net/
azureAuth.subscriptions().list();
//Second call - resource : https://graph.windows.net/
azureAuth.servicePrincipals().list();
经过一些调试,我发现Azure SDK上的以下函数失败:
(com.microsoft.azure.credentials.RefreshTokenClient)
AuthenticationResult refreshToken(String tenant, String clientId, String resource, String refreshToken, boolean isMultipleResourceRefreshToken) {
try {
RefreshTokenResult result = service.refreshToken(tenant, clientId, "refresh_token", resource, refreshToken)
.toBlocking().single();
if (result == null) {
return null;
}
return new AuthenticationResult(
result.tokenType,
result.accessToken,
result.refreshToken,
result.expiresIn,
null,
null,
isMultipleResourceRefreshToken);
} catch (Exception e) {
return null;
}
}