ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

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

2021-07-04 17:00:06  阅读:279  来源: 互联网

标签:4.0 登录 填坑 https 跳转 AspnetCore3.1 IdentityServer4


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之路再出发!

标签:4.0,登录,填坑,https,跳转,AspnetCore3.1,IdentityServer4
来源: https://www.cnblogs.com/boydenyol/p/14969335.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有