zoukankan      html  css  js  c++  java
  • 关于 IdentityServer4 在最新版 Chrome 上登录失败的问题

    问题描述

    公司用identityserver4作为授权认证中心,刚开始用着都毫无违和感,昨儿突然就登录不上了;

    问题分析

    F12看了请求,发现是请求授权的时候失败了...

    回想了一下脑海里关于对identityserver4的些许理解,怀疑是证书的问题,因为当时制作证书的时候时间设置的有点短,可能过期了,于是一顿操作替换证书,重新部署请求,然而并不是...

    既然猜测的不对,那就只能通过看服务端日志了,果然找到了一段日志:Showing login: User is not authenticated

    打开百度,复制、粘贴一把梭,果然面向百度编程就是easy.

    原因

    由于最新版的Chrome的Cookie策略导致写Cookie失败,从而导致用户认证的失败.
    SameSite=strict:对于来自不同于源站的站点发出的请求,不发送cookie,为了防止CSRF攻击。
    SameSite=lax:类似于strict,但是当用户有意地通过单击链接或发送表单启动请求时,就会发送cookies。不会在脚本请求时发送。
    SameSite=none:无论请求来自哪里都可以(但是需要https)。

    解决

    问题找到了解决也就简单了,把Cookie策略设置了lax即可(谁让公司没上https,才出了这么多事儿).

    public void ConfigureServices(IServiceCollection services)
    {
        ....
        // 配置cookie策略
        services.Configure<CookiePolicyOptions>(options =>
        {
            options.MinimumSameSitePolicy = Microsoft.AspNetCore.Http.SameSiteMode.Lax;
        }
    }
    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
        ....
        app.UseCookiePolicy();
    }
    

    解决问题的链接:https://www.e-learn.cn/topic/3672478

    总结

    1. 其实这个问题公司的测试同事好久之前就出现过,只是因为自己的无知,当时自己无法复现这个问题,所以就没有去重视它,所以珍惜测试同事提出的每个bug,进步就在眼前.
    2. 软件想要持续的保持活力得不停的更新、迭代,不然就会被抛弃,小小的cookie都已经发展得这么复杂了...
  • 相关阅读:
    数据库MySQL安装和校验
    字符集和字符编码
    Eclipse之文件【默认编码格式设置】,防止乱码等问题
    一天搞定CSS(扩展):CSS Hack
    Eclipse导入项目常见问题----facet版本问题04
    php 实现python hashlib.md5.digest
    刚安装python,使用pip install安装第三方库报错,提示“由于目标计算机积极拒绝,无法连接”
    Ubuntu 安装 Elasticsearch
    PHP
    php面试题之四——PHP面向对象(基础部分)
  • 原文地址:https://www.cnblogs.com/wh-blog/p/13527432.html
Copyright © 2011-2022 走看看