使用AAD进行身份验证的Azure应用程序在一段时间后返回401

oknwwptz  于 2022-12-19  发布在  其他
关注(0)|答案(1)|浏览(155)

我有一个托管在Azure应用服务上的C#. net核心Web应用。它正在使用Azure Active Directory进行身份验证。
身份验证正在工作-当用户访问Web应用程序时,他们会被要求登录,一旦登录,他们就可以成功访问Web应用程序。
但是,在访问Web应用程序并返回Web应用程序后的某个时间,他们有时会收到401错误。我认为,如果用户的浏览器在两次访问之间打开了很长时间,这种情况尤其会发生。Web应用程序用于商业环境中,用户关闭浏览器之间的间隔通常为几天(在一天结束时,用户通常只是关闭他们的膝上型计算机而不是关机)。
如果我删除用户的AppServiceAuthSession会话cookie,他们可以成功访问Web应用程序本身,所以看起来cookie可能会过期,但不会自行刷新。
是否可以做些什么来阻止用户接收401错误-最好是Web应用程序删除并重新创建会话cookie,并在需要时要求用户再次登录,或类似的操作。

zaqlnxep

zaqlnxep1#

当Azure应用服务启用身份提供程序时,默认情况下将请求以下权限openid、配置文件和电子邮件。
但当用户实际批准offline_access时,范围是指当您的应用接收刷新令牌并在旧令牌过期时提供新访问令牌时,您的应用可以延长令牌的生命周期。

因此,需要在门户中显式设置offline_access作用域,或者通过资源图https://resources.azure.com/,***subscriptions >your subscription> > resourceGroups > <your resource group name> > providers > Microsoft.Web > sites > <app_name> > config > authsettingsV2..***中的authsettingsv2,并在作用域列表中添加offline_access。

identityProviders": {
  "azureActiveDirectory": {
    "login": {
      "loginParameters": ["scope=openid profile email offline_access"]
    }
  }
}

要刷新访问令牌,请随时在应用中调用/.auth/refresh。当身份验证会话在约8小时后到期时,将有长达72小时的宽限期来刷新它。因此,当令牌失效时调用/. auth/refresh,以便用户无需每次跟踪,直到72小时完成且会话令牌到期。72小时后,用户需要再次进行身份验证。
即使是此宽限期,如果需要也可以延长到一些(短值),主要使用Azure cli。请在AuthN/AuthZ-Azure应用服务中检查此OAuth令牌|微软学习

az webapp auth update --resource-group <group_name> --name <app_name> --token-refresh-extension-hours <hours>

我没有扩展值,可以从下面的命令中看到

az webapp auth show --resource-group <group_name> --name <app_name> --token-refresh-extension-hours <hours>

相关问题