如何从Active Directory访问令牌中获取刷新令牌?

时间:2019-06-24 10:19:45

标签: azure-active-directory

我有一个Angular 6+ Web应用程序。网页通过Microsoft ADAL向Azure Active目录发出请求,以使用户得到身份验证。身份验证用户流程运行正常。用户从Azure Active Directory获取登录页面。成功通过身份验证后,我将获得访问令牌(JWT)。

我面临的问题是,令牌的有效期为1小时。一小时后,由于令牌到期,用户将自动注销。为了避免这种情况,我正在尝试刷新令牌。

我阅读了以下URL,并了解可以使用刷新令牌来刷新令牌。这是OAuth 2.0授权代码流程。

https://docs.microsoft.com/en-us/dotnet/api/microsoft.identitymodel.clients.activedirectory.authenticationcontext.acquiretokensilentasync?view=azure-dotnet

但是,在我实现的流程中,我没有看到在响应头中发送“ refresh_token”。以下是我在响应标题中看到的值。

adal.expiration.key
adal.access.token.key
adal.session.state
adal.login.request.
appLanguage
adal.token.keys
adal.error
adal.error.description
adal.state.login
authToken
userid
module
adal.token.renew.status
adal.nonce.idtoken
adal.login.error
adal.idtoken

我在SO中阅读了很多arcticle和Question线程,但是我不了解如果要通过Azure Active Directory对用户进行身份验证,如何获得刷新令牌。

编辑:

我在SO中阅读了以下类似问题。由于该线程是2016年编写的,因此我无法弄清其中所提到的如何设置“身份验证设置”。

https://stackoverflow.com/questions/36320641/how-to-configure-azure-ad-to-enable-refresh-tokens

1 个答案:

答案 0 :(得分:0)

听起来像您正在使用隐式授权流。该流中没有刷新令牌。刷新令牌的方式是通过重定向,该操作可以在隐藏的iframe中完成。当您从ADAL.js或MSAL.js要求令牌时,可以在后台为您刷新。隐式授权流要求AAD中的用户会话在刷新时处于活动状态。