zoukankan      html  css  js  c++  java
  • AspnetCore3.1配合IdentityServer4(4.0)的填坑之路

    AspnetCore3.1配合IdentityServer4(4.0)的填坑之路

    ​ 最近在学习IdentityServer4,顺便build一下Aspnetcore和IdentityServer4的源码,研究下Id4的遇到的各种问题,以下走过的坑我是基于IdentityServer4的4.0.0分支下测试Sample文件夹下的Quickstarts的3_AspNetCoreAndApis进行改造的代码,为了匹配IdentityServer4-4.0.0版本,我使用了

    IdentityServer4.Quickstart.UI的最新UI代码。

    ​ 接下来,开始一点点填坑之路。

    坑一:登录后仍旧返回登录界面

    请看坑图:

    无法登录

    调试过程中,发现登录过程正常,流程正常,再跳转回来就仍旧是登录界面。毫无头绪,为快速解决,施展百度大法,查得终极原因如下:

    百度大法

    于是紧跟步伐,在IdentityServer4的StartUp中补充以下代码:

    services.Configure<CookiePolicyOptions>(options =>
    {
        //https://docs.microsoft.com/zh-cn/aspnet/core/security/samesite?view=aspnetcore-3.1&viewFallbackFrom=aspnetcore-3
        options.MinimumSameSitePolicy = Microsoft.AspNetCore.Http.SameSiteMode.Lax;
    });
    

    并再Configure中使用app.UseCookiePolicy();

    于是登录的坑变成了接下来的第二个坑。

    坑二:Correlation failed

    请看坑图:

    ​ 跳转的登录界面没有显示,却显示了开发者调试界面。

    Correlation failed

    ​ 调试IdentityServer4的代码发现,问题出现在这里:

    ​ Cookie肯定是哪一步骤被覆盖了,这个问题不打算深究(一来是觉得实力太弱,再就是觉得这上面花费时间比较久),于是再次使用百度大法,寻找答案。

    ​ 看晓晨大神的方案,难道仅仅是https的问题,动手操练起来,先把IdentityServer4的https配置起来。

    ​ 于是,再次Correlation failed!那就再把MvcClient的代码https配置起来。至此大坑已经填完,已经能够正常跳转并登录了。现在其实删除第一个坑中配置的CookiePolicy已经无伤大雅。

    ​ 说完了,这两个坑,接下来谈谈遇到的其它两个小坑。

    坑三:“The remote certificate is invalid according to the validation procedure”

    ​ IdentityServer4服务端的https配置好了之后,如果客户端跳转服务端登录界面时,遇到这个问题,则需要重置下证书。

    ​ 首先,打开控制面板->搜索管理用户证书->找到个人->证书,删除原有证书即可,如下图所示:

    ​ 如果删除完成后,直接运行IdentityServer4服务端,则会继续报错Unhandled Exception: System.InvalidOperationException: Unable to configure HTTPS endpoint. ,此时请念好这两句口诀:

    • dotnet dev-certs https --clean
    • dotnet dev-certs https -t

    ​ 即可重新生成https证书,光荣解决问题。

    坑四:Invalid scope

    请看坑图:

    ​ 这是由于IdentityServer4升级了InMemory部分的AddInMemoryApiResources,将其更改为了AddInMemoryApiScopes,因此需要对Config类作以下调整:

     public static IEnumerable<ApiScope> Apis =>
         new List<ApiScope>
         {
             new ApiScope("api1", "My API")
         };
    

    ​ 同时,在Startup中将.AddInMemoryApiResources(Config.Apis)替换为.AddInMemoryApiScopes(Config.Apis).

    ​ 以上便是AspnetCore3.1配合IdentityServer4(4.0)的初级学习阶段的填坑之旅了,那IdentityServer4之路再出发!

  • 相关阅读:
    好用的绘图工具推荐-processon
    前台获取到的后台json对象取值时undefined的解决方法
    axios怎么引用?
    postman发送post请求,后端无法接收到参数
    bcrypt加密算法
    mongoose创建model名字时,为什么集合名会自动加s?
    《遇见未知的自己》 张德芬
    《把时间当做朋友》笔记摘要
    精英与普通人的区别
    金刚经全文
  • 原文地址:https://www.cnblogs.com/boydenyol/p/14969335.html
Copyright © 2011-2022 走看看