我有一个使用Azure AD OAuth进行身份验证的Web API,它由移动客户端(Android,iOS)使用,并且有一个功能要求,如果他想使用该应用程序,则可以避免用户再次输入他的凭据令牌和刷新令牌到期时如何通过授权代码授权流程处理此问题的最佳方式?非常感谢。
答案 0 :(得分:3)
快速回答是,当刷新令牌过期时,唯一的办法就是让用户重新输入信用卡。
以防万一其他人对更多细节感兴趣:
如果您使用ADAL,则应减少用户在第一次之后输入凭据的需要。每当ADAL从服务器获取访问令牌时,它也会获得“刷新令牌”。当原始访问令牌到期时,可以将刷新令牌交换为新的访问令牌和新的刷新令牌。完全以静默方式完成刷新令牌,只要刷新令牌仍然有效,就永远不会要求用户提供凭据。
如果您使用ADAL,则永远不需要意识到这种情况正在发生。 Android和iOS ADAL库都维护访问令牌和刷新令牌的缓存。当您调用acquireToken时,ADAL将首先检查其缓存以查看是否存在任何有效的访问权限。如果当前没有有效的访问令牌,它将查看是否有可用于获取新访问令牌的刷新令牌。换句话说,它将尽一切可能避免提示用户提供凭据。为了利用这种行为,您需要做的就是每次需要令牌时都调用acquireToken。除非您有一些特殊要求,否则没有理由坚持使用该令牌。每次需要再次使用访问令牌时,只需调用ADAL即可。
但是,如果不使用AAD刷新令牌,则会在大约14天后到期。每个新刷新令牌再次启动14天时钟。这项工作共计90天。但是90天后,用户将不得不再次输入凭证。
对于ADFS,刷新令牌到期时间更短,例如24小时,除非登录来自已注册的设备。