Azure active directory 如何正确续订服务器到服务器调用的ADAL身份验证令牌
在我的场景中,用户授予我的AAD应用程序使用Microsoft Graph API在服务器进程中不时读取其电子邮件的权限。在用户授予权限时,我正在使用authContext.GetAuthorizationRequestURL和authContext.AcquireTokenByAuthorizationCodeAsync获取令牌。此后,每当我需要访问令牌时,我都会执行以下操作:Azure active directory 如何正确续订服务器到服务器调用的ADAL身份验证令牌,azure-active-directory,adal,microsoft-graph-api,Azure Active Directory,Adal,Microsoft Graph Api,在我的场景中,用户授予我的AAD应用程序使用Microsoft Graph API在服务器进程中不时读取其电子邮件的权限。在用户授予权限时,我正在使用authContext.GetAuthorizationRequestURL和authContext.AcquireTokenByAuthorizationCodeAsync获取令牌。此后,每当我需要访问令牌时,我都会执行以下操作: TokenCache tokenCache; // deserialized Authenticat
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(禁止)
我得到的印象是,我没有用正确的信息调用AcquireToken*()的正确风格。熟悉此场景的任何人?问题中指示的AcquireTokenAsync重载将获取仅应用程序的令牌。需要一个接受ClientCredential和UserIdentifier参数的AcquireToken重载,但不幸的是,这种重载并不存在
但是,您可以继续使用访问令牌,直到其过期(请使用AuthenticationResult.ExpiresOn进行检查),然后将AuthenticationResult.RefreshToken与AcquireTokenByRefreshTokenAsync API一起使用,以获取新的访问令牌。问题中指示的AcquireTokenAsync重载将获取仅应用程序的令牌。需要一个接受ClientCredential和UserIdentifier参数的AcquireToken重载,但不幸的是,这种重载并不存在
但是,您可以继续使用访问令牌,直到其过期(请使用AuthenticationResult.ExpiresOn进行检查),然后将AuthenticationResult.RefreshToken与AcquireTokenByRefreshTokenAsync API一起使用,以获取新的访问令牌。很酷,谢谢。我确实弄明白了令牌的应用程序唯一性。我最终通过创建并传递一个UserAssertion使代码正常工作,该断言由以下内容组成:前一个访问令牌、用户名和神秘字符串:
““urn:ietf:params:oauth:grant type:jwt bearer”
。它似乎起作用了。你能评论一下这个解决方案的有效性吗?这对我来说根本不起作用。目前,我似乎有一个解决方案可以使用AcquireTokenUsingRefreshToken()。很好,谢谢。我确实弄明白了令牌的应用程序唯一性。我最终通过创建并传递一个UserAssertion使代码正常工作,该断言由以下内容组成:前一个访问令牌、用户名和神秘字符串:““urn:ietf:params:oauth:grant type:jwt bearer”
。它似乎起作用了。你能评论一下这个解决方案的有效性吗?这对我来说根本不起作用。目前,我似乎有一个解决方案可以使用AcquireTokenUsingRefreshToken()。