我们正在创建一个 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/