我使用Azure Active Directory和OpenIDConnect在Azure中托管应用程序进行身份验证 - 通常一切正常。但是我遇到了一个问题,其中一些请求生成了对https://login.microsoftonline.com/的调用,然后调用了所请求的页面 - 没有请求密码。我假设这是某种令牌刷新?
问题是该网站使用了相当数量的ajax并且这些请求停止工作,因为它们被重定向到https://login.microsoftonline.com/这可能在15分钟后发生,但JWT令牌的nbf和exp属性显示有效性大约一个小时的时间。
我已将OpenIdConnectAuthenticationOptions的BackchannelTimeout属性设置为30分钟,但这似乎没有任何区别。
任何人都可以就可能发生的事情以及改变或解决这些行为的方案提出任何建议吗?
答案 0 :(得分:2)
您的问题可以用与其他帖子相同的方式回答:MVC AD Azure Refresh Token via ADAL JavaScript Ajax and KnockoutJs
简而言之:OpenId Connect中间件旨在支持基于重定向的Web应用程序。 Ajax调用不太适合通过cookie保护,而您遇到的问题是其中一个原因。使用令牌而不是cookie可以更好地保护基于Javascript的API调用。 对于某些可能提供替代方法的链接,请参阅上面的链接。
答案 1 :(得分:0)
我为.NET Web应用程序创建了一个nuget包,它在后台刷新了Azure Active Directory令牌。 更多信息:https://www.nuget.org/packages/RefreshTokenForAjaxRequest.Azure.ActiveDirectory/