处理过期在asp.net核心和角应用程序中的Azure AD会话

处理过期在asp.net核心和角应用程序中的Azure AD会话

问题描述:

我有一个Asp.Net核心项目托管在其中的角度应用程序。在asp.net核心项目中有几个API控制器。这些控制器在Angular App中调用。处理过期在asp.net核心和角应用程序中的Azure AD会话

asp.net核心应用程序受Azure AD身份验证的保护,使用OpenIdConnect和Cookies。我所看到的是我应该如何处理用户的隔夜闲置会话的令牌过期。

目前,如果用户将恢复其过期的浏览器会话,则会在由Angular App创建的异步API调用中引发异常。我应该如何让Angular App将用户重定向到Azure AD应用程序的登录页面?

+0

您是否在使用ADAL?你是否收回刷新令牌? –

+0

是的,我正在使用ADAL。我确实得到了刷新令牌。 –

+0

刷新令牌在用户回来时已过期吗?我只需使用您为用户提供的刷新令牌获取新令牌。有一个ADAL函数正是为此:[AuthenticationContext.AcquireTokenByRefreshToken方法](https://msdn.microsoft.com/en-us/library/microsoft.identitymodel.clients.activedirectory.authenticationcontext.acquiretokenbyrefreshtoken.aspx)。如果刷新令牌也已过期,那么您最好重新启动认证过程。 –

您可以在Web应用程序中实现一个隐藏的iframe,每隔45分钟左右向服务器发出一次请求。这样,您的令牌在您的应用程序运行时将始终有效。

This blog post会谈此问题并解释您的选项,包括显示按预定时间间隔发出请求的脚本。

我通过将令牌缓存移到Sql Server来解决了令牌到期问题。完成此操作后,如果当前的内存令牌已过期,则使用来自sql server的刷新令牌来生成新的访问令牌。