【问题标题】:Azure App using AAD for authentication returns 401 after period of time使用 AAD 进行身份验证的 Azure App 在一段时间后返回 401
【发布时间】:2022-12-17 19:23:27
【问题描述】:

我有一个托管在 Azure 应用服务上的 C# .net 核心 Web 应用。它使用 Azure Active Directory 进行身份验证。

身份验证正在运行 - 当用户访问 Web 应用程序时,他们被要求登录,一旦他们登录,他们就可以成功访问 Web 应用程序。

但是,有时在访问网络应用程序并返回网络应用程序后,他们有时会收到 401 错误。我认为如果用户浏览器在两次访问之间打开了很长时间,这种情况尤其会发生。 Web 应用程序在商业环境中使用,用户通常需要几天时间才能关闭浏览器(在一天结束时,用户通常只会关闭笔记本电脑,而不是将其关闭)。

如果我删除用户 AppServiceAuthSession 会话 cookie,他们可以成功访问 webapp 本身,因此 cookie 似乎可能过期但不会自行刷新。

是否可以采取任何措施来阻止用户收到 401 错误 - 最好是网络应用程序删除并重新创建会话 cookie,并要求用户在需要时再次登录,或者类似的事情。

【问题讨论】:

    标签: c# azure authentication azure-active-directory azure-web-app-service


    【解决方案1】:

    当 azure 应用程序服务启用身份提供者以下权限时 默认要求 openid、profile 和 email。

    但是,当用户实际批准 offline_access 范围时,您的应用程序可以延长令牌生命周期,因为您的应用程序会收到刷新令牌,并在旧令牌过期时提供新的访问令牌。

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

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

    要刷新访问令牌,请随时在您的应用中调用/.auth/refresh。 当身份验证会话在 ~8 小时后过期时,将有一个长达 72 小时的宽限期来刷新它。所以当令牌无效时调用 /.auth/refresh 这样用户就不需要每次都跟踪,直到 72 小时完成和会话令牌到期。 72 小时后,用户需要再次进行身份验证。

    如果需要一些(短值)主要使用 azure cli,甚至可以延长这个宽限期。 请检查这个OAuth tokens in AuthN/AuthZ - Azure App Service | Microsoft Learn

    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>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-03-22
      • 1970-01-01
      • 2020-07-18
      • 2017-03-20
      • 1970-01-01
      • 1970-01-01
      • 2020-09-08
      • 2019-01-13
      相关资源
      最近更新 更多