如何正确地将服务器的ADAL身份验证令牌续订到服务器调用

时间:2016-03-25 18:54:04

标签: azure-active-directory adal microsoft-graph

在我的场景中,用户授予我的AAD应用程序使用Microsoft Graph API在服务器进程中不时读取其电子邮件的权限。在用户授予权限时,我使用authContext.GetAuthorizationRequestURL和authContext.AcquireTokenByAuthorizationCodeAsync获取令牌。此后,每当我需要访问令牌时,我执行以下操作:

    TokenCache tokenCache; // deserialized
    AuthenticationContext authContext = CreateAuthContext(authority, tokenCache);
    AuthenticationResult authResult = await authContext.AcquireTokenAsync(
            resource, 
            new ClientCredential(clientId, clientKey));
    return authResult.AccessToken;

不幸的是,使用生成的accesstoken调用MS Graph API会返回403(Forbidden)。

我得到的印象是我没有使用正确的信息调用AcquireToken *()的正确风格。有谁熟悉这种情况?

1 个答案:

答案 0 :(得分:0)

问题中指示的AcquireTokenAsync重载将获取仅限app的令牌。接受ClientCredential和UserIdentifier参数的AcquireToken重载是需要的,但不幸的是,这样的重载不存在。

但是,您可以继续使用访问令牌直到它过期(使用AuthenticationResult.ExpiresOn检查),然后使用AuthenticationResult.RefreshToken和AcquireTokenByRefreshTokenAsync API来获取新的访问令牌。