azure-web-app-service - 即使用户正在积极使用应用程序,Azure AD Easy Auth 也会过期

标签 azure-web-app-service azure-active-directory

我们有一个使用 Azure Active Directory“Easy Auth”的单页应用程序 (SPA),例如无代码解决方案。当用户第一次打开应用程序时,这似乎工作正常。他们被重定向到 Microsoft 登录页面,他们可以进行身份​​验证,然后访问该应用程序。

然后,因为它是一个 SPA,用户将四处导航并且只触发 Ajax 请求。大约 24 小时后,当 session cookie 过期时,问题就会出现。用户可能仍然打开相同的浏览器选项卡并且不执行整个页面刷新。然后他们可能正在处理记录,在某个时候他们的下一个 Ajax PUT 请求失败并返回重定向 HTTP 状态并且他们失去了他们的工作。

所以他们的关键问题是:

我们如何让 SPA Ajax 请求扩展当前用户的 session ,以便他们的 session 在他们积极使用应用程序时不会过期?

Azure AD Easy Auth 服务似乎没有“尊重”用户的事件,这让我们相信 session cookie 永远不会更新。

注意:我们最近对/.auth/refresh 端点进行了一些测试,但这也没有解决问题。

最佳答案

有几种方法可以解决这个问题。以下是我能想到的一些:

  1. 使用本地存储:您提到的问题是用户由于重定向而丢失了他们的工作。如果您将正在进行的状态保存在本地存储中,以便在将它们重定向回页面时可用,则可以解决丢失工作的问题。
  2. 切换到使用 token :/.auth/refresh 端点在使用 AAD 时不会刷新 AppServiceAuthSession,因为 AAD 不支持刷新用户信息。您可以做的是使用 x-zumo-auth token 向您的后端进行身份验证。 /.auth/refresh 端点将正确刷新这些 token 。如果您使用 /.auth/login/aad 显式登录用户,则可以将 session_mode=token 添加为查询字符串参数。如果您使用 Mobile Apps JavaScript SDK,这是为您完成的.如果登录是自动的,那么您需要在身份验证配置的 additionalLoginParams 设置中添加 session_mode=token。然后,您可以从登录完成后添加到 URL 的 #token 片段中解析身份验证 token 。
  3. 使用隐藏的 iframe:我自己还没有尝试过,但如果您可以让它工作,它可能需要最少的代码更改。这个想法是,当您检测到用户处于事件状态时,您可以使用隐藏的 iframe 定期重新登录用户。 iframe 需要指向类似 ./auth/login/aad?prompt=none&domain_hint={userdomain.com} 的内容,其中 {userdomain.com} 是最后一部分用户的电子邮件地址 - 例如contoso.com。这些参数被传递到 AAD 登录页面,登录应该自动完成,无需任何用户交互。在浏览器窗口中手动测试几次以确保其正常工作。结果应该是一个更新后的身份验证 cookie,具有新的到期时间。

如果您对这些选项有任何疑问或问题,请在评论中告诉我。

关于azure-web-app-service - 即使用户正在积极使用应用程序,Azure AD Easy Auth 也会过期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45819990/

相关文章:

Azure 存储帐户拒绝托管服务标识的颁发者

asp.net-web-api - 受 Azure AD B2C 保护的自动化端点测试

powershell - 使用 Powershell 获取 Azure WebApp 的 PublishProfile

c# - 我的 AAD 身份验证回复网址有什么问题吗?

powershell - Azure Web App - 设置 TLS 的最低版本

azure - 在使用 Azure AD 客户端凭据流生成的访问 token 中的 UPN 声明中添加自定义值

spring-boot - 配置 spring-boot-starter-oauth2-client 以使用 Azure AD 进行身份验证

azure - 最大限度降低 Azure 存储出站数据成本的策略

azure - Azure 应用服务上的 ActiveDirectoryMembershipProvider : Access Denied

azure - Microsoft Graph API 是否可以与 Office 365 家庭订阅一起使用?