azure - 使用 Azure AD 将用户登录到 ASP.NET Core 5 Web 应用程序时设置 cookie 过期的正确方法是什么?

标签 azure asp.net-core authentication azure-active-directory azure-web-app-service

我们正在创建一个 ASP.NET Core 5.0 MVC 项目,其身份验证由 Azure AD 处理,因此我们需要使用 AddMicrosoftIdentityWebApp 进行 API 调用,然后我们可以注入(inject) GraphServiceClient 。我正在努力调试或设置 cookie 过期时间。最终,cookie 的过期时间需要是 future 两天。

我有以下代码,尝试通过 ExpireTimeSpan 选项使 OIDC cookie 过期。然而,cookie 并没有像应有的那样在一分钟后过期。根据下面的引用,Azure 设置的期限可能至少为 1 小时。

使用 Azure AD 将用户登录到 Web 应用程序时设置 Cookie 过期的正确方法是什么?这是需要在 Azure Web 门户中设置的配置还是我们可以通过编程方式进行设置?

Services.AddAuthentication(OpenIdConnectDefaults.AuthenticationScheme)
    .AddMicrosoftIdentityWebApp(options =>
    {
        this.Configuration.GetSection("AzureAD").Bind(options);
    }
    , cookieAuthOptions =>
    {
        cookieAuthOptions.Cookie.Name = "MyWebAppName.Auth";
        cookieAuthOptions.ExpireTimeSpan = TimeSpan.FromMinutes(1);
        cookieAuthOptions.SlidingExpiration = true;
    }
    );

    Services.AddRazorPages().AddMicrosoftIdentityUI();
    Services.AddApplicationInsightsTelemetry();
    Services.AddHttpContextAccessor();
    Services.AddGraphServiceClient(this.Configuration);

引用:https://yousry.medium.com/the-mystery-of-session-timeout-in-asp-net-core-3-1-5-70bb854fe168

编辑:赏金调试援助请求

请演示如何在 Visual Studio 中设置 cookie 监视,以便我可以检查 cookie 过期时间。我尝试使用上面引用中提到的方法但没有成功。

最佳答案

不确定您是否会喜欢我的回答,但我想以提高您 future 能力的方式回答这个问题。

OAUTH 技术

我以这些为生,它们都是关于 HTTP 消息的。要完全了解正在发生的情况,您需要能够完整地查看请求和响应。浏览器工具和 IDE(例如 Visual Studio Code)用处不大。

开源代理工具

我曾经在 Windows 上工作并使用 Fiddler tool查看飞行中的请求。我的blog post解释了如何将此类工具用于各种技术和应用程序类型,因为我认为它是有效的开发人员设置的重要组成部分。

结果

然后,您将完全了解幕后发生的情况,这是在 C# 代码中配置库时所没有的。请参阅step 6 of this blog post ,它检查 cookie 的设置方式,包括过期时间。

点网

我曾经大量使用 C#,我认为 Jason Pan 的答案是正确的。我解决这个问题的方法是首先跟踪 HTTP 消息,看看当前设置的到期时间是多少。然后我会根据他的建议进行代码更改,然后回溯 HTTP 消息,直到找到导致所需行为的选项。

Cookie 过期

cookie层实际上与OAuth无关。它是一种特定于应用程序的存储 token 并将其保留在浏览器之外的方式。因此,任何 Azure AD 设置都不会影响 cookie 过期时间。作为第一步,您应该致力于了解正在发生的情况。过去我也通过挖掘Microsoft cookie handler source code发现了一些东西。 .

关于azure - 使用 Azure AD 将用户登录到 ASP.NET Core 5 Web 应用程序时设置 cookie 过期的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70981046/

相关文章:

powershell - 指定某些高级性能级别时,Azure PowerShell Get-AzureSqlDatabaseServiceObjective 返回 null

azure - 为什么我没有从警报规则中收到警告?

asp.net-core - ASP.NET Core Web 应用程序控制台立即关闭

python - Google App Engine : app. yaml 与 python 代码中的身份验证

c# - 通过已知 key 从 Azure 表存储获取 100 个项目结果 HTTP 错误 414

azure - 使用 Azure 移动客户端时无法解决同步冲突 - 错误不断出现

asp.net - <access sslFlags ="Ssl.SslRequireCer"> 在 .net 核心

c# - 启用 ASP.Net Core session 锁定?

php - Codeigniter Auth Library - 特定组的用户名公共(public)配置文件,对其他组禁用

authentication - 实现 SCRAM-SHA1 客户端,在某处出错