首页 > 其他 > 详细

Skoruba.IdentityServer4.STS.Identity 踩坑

时间:2021-09-13 09:53:07      阅读:21      评论:0      收藏:0      [点我收藏+]

记录:

Skoruba.IdentityServer4.STS.Identity项目中注册的认证处理程序,接入第三方认证  

  技术分享图片

   技术分享图片

 

 

   如下图:这里没有指定默认的Authentication Scheme 

 技术分享图片

  但是在AddIdentityServer中 services.AddIdentityServer 添加Identityserver4 时

 

 

 

   技术分享图片

  技术分享图片

 

 

   技术分享图片

 

 

   技术分享图片

 

 

   在Identityserver4 扩展方法,identityserver4 重新指定默认 Authentication Scheme,还添加了cookie Scheme,一个默认Scheme ,一个可用于第三方认证使用。

  接入第三微软Azure AD 认证时,存在的问题

   如下图:

  技术分享图片

 

 

   当使用 AddMicrosoftIdentityWebApp 方法时,在AccountController 中 ExternalLoginCallback会报错,下图代码展示区

  原因在于  调用_signInManager.GetExternalLoginInfoAsync();

  技术分享图片

 

 

 

 

 

  方法  signInManager.GetExternalLoginInfoAsync 方法内部,调用了 Context.AuthenticateAsync(IdentityConstants.ExternalScheme); 在运行的时候

  IdentityConstants.ExternalScheme ="Identity.External" 

  signInManager.GetExternalLoginInfoAsync()执行一直返回null,使用了错误的  Authentication Scheme,

 技术分享图片

 

 

 

  解决方案一

   技术分享图片

 

 

 

  如果改用 await  HttpContext.AuthenticateAsync(OpenIdConnectDefaults.AuthenticationScheme); 将得到正确的处理。那么可以重写 _signInManager.GetExternalLoginInfoAsync() 方法实现。

  解决方法二

  技术分享图片

   使用 AddAzureAD 扩展包,需要使用nuget 下载 Microsoft.AspNetCore.Authentication.AzureAD.UI 包。

  存在的其他需要注意的问题

  不管使用 AddMicrosoftIdentityWebApp 还是 AddAzureAD ,如果还存在 GitHub 、Google 第三方认证的话

  例如:使用GitHub ,下图查看它的扩展方法

  技术分享图片

 

 

   技术分享图片

 

 

   技术分享图片

 

 

   github,会使用自己的Authentication Scheme 和 认证处理中间件,一般无需设置 options.CallbackPath = externalProviderConfiguration.GitHubCallbackPath;

   在github设置中 ,如下设置:

  技术分享图片

  关于接入微软Azure AD 使用 AddMicrosoftIdentityWebApp 。谁能告诉我到底是什么问题?

   

 

Skoruba.IdentityServer4.STS.Identity 踩坑

原文:https://www.cnblogs.com/youlicc/p/15260373.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!