【问题标题】:Identity server 4 session/cookie questions身份服务器 4 会话/cookie 问题
【发布时间】:2021-12-07 10:32:05
【问题描述】:

我有问题相关的用户会话。

我希望用户在一段时间不活动(5 分钟)后退出。为此,在客户端,我像这样配置了 cookie

.AddCookie(CookieAuthenticationDefaults.AuthenticationScheme, options =>
            {
                options.ExpireTimeSpan = TimeSpan.FromMinutes(5);
                options.SlidingExpiration = false;
            })

在 5 分钟不活动后,我有一个重定向,该重定向在我的身份服务器上完成,但使用静默重新身份验证。啊。

仍然在客户端,我通过将此属性添加到 OIDC 配置级别进行测试

.AddOpenIdConnect("oidc", options =>
{
   [...]
   options.Prompt = "login";
   [...]
});

5 分钟后,我收到了身份验证请求,但 SSO 不再适用于该客户端。

简而言之,当谈到会话的概念时,我的印象是缺乏能力或事后诸葛亮。

你能帮帮我吗?

【问题讨论】:

    标签: c# session cookies identityserver4 openid-connect


    【解决方案1】:

    max_age 参数可能是您在这种情况下想要的。如果上次验证的时间超过 max_age 秒,这将强制交互式验证。

    由于此参数可能被篡改,因此您还可以在您的客户端中验证 auth_time 声明在重新建立会话之前是否在可接受的范围内。

    请注意,您可能希望在您的客户端中打开滑动过期,因为它会在 5 分钟后强制它们退出,而与当前的活动无关。

    【讨论】:

    • 我通过指示 max_age 的值(从几分钟到几天)进行测试,但每次我从身份服务器返回时都会告诉我“显示登录:超出请求的 MaxAge”。 edit我找到了错误原因:request.Subject.GetAuthenticationTime() = 2021/07/06。知道这个值的来源以及如何重置它吗?
    • 它来自身份验证cookie中的auth_time声明,应该由IDS4自动管理
    猜你喜欢
    • 2018-11-15
    • 1970-01-01
    • 1970-01-01
    • 2020-11-17
    • 1970-01-01
    • 2023-02-17
    • 1970-01-01
    • 2017-07-26
    • 1970-01-01
    相关资源
    最近更新 更多