应无所住,而生其心
排名
1
文章
860
粉丝
112
评论
163
net core webapi post传递参数
庸人 : 确实坑哈,我也是下班好了好几次,发现后台传递对象是可以的,但...
百度编辑器自定义模板
庸人 : 我建议换个编辑器,因为现在百度富文本已经停止维护了,用tinymec...
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:50010702506256
欢迎加群交流技术

identity server4 登录成功跳回到signin-oidc得到404

13395人阅读 2019/12/15 13:27 总访问:5192564 评论:4 收藏:0 手机
分类: 微服务

使用identity server4 做单点登录,登录成功后跳转到/signin-oidc得到404,纠结了很久,记录一下。

我这里的环境是vs2019和.net core3.0,用的Open ID Connect(OIDC)模式

 id4是真的坑多,这个问题翻遍了网上的博客都没有找到想要的答案,尝试了很多种方法终于找到问题的地方。不过多坑一下对里边的流程和原理会更熟悉一点,只是这个过程太想让人砸手机了

先情景还原一下

访问需要登录的页面,如果还没有登录就跳转到授权中心,然后登录成功后跳转回来就一直这样了,并没有跳回到登录前的地址。

然后纠结了很久,网上也搜了很久都没有找到问题,这个过程就略过了。后面就想找一个可以正确跑得起来的例子,来对比一下,从跑得起来的例子看出来一个情况。

跳转到/signin-oidc后其实是做了一些操作的,有一个Cookies siged in,也就是访问/signin-oidc后程序做了解析,把登录成功后收到的信息解析出来存储到一个地方,并且进行了cookie的写入,下次访问的时候发现有cookie等信息就表示登录成功了。

大概的一个流程就是跳转到一个中间件验证权限,如果没有登陆就跳转到统一的登陆重中心,登陆后跳转回来。如果登陆了就直接通过验证,从token中取出来登陆携带的信息,方便用户取。


所以我猜测我那个跳转回来后报404的问题不是服务器的问题而是客户端的问题

因为已经成功跳转回来了,只是客户端解析的问题。所以我就尝试一下把那个可以成功跑起来的例子对接到我自己写的授权中心。

结论是可以的,说明就是客户端的问题,登录服务端没有问题。确定了哪里的问题后就相对容易一点了,于是就开始在客户端找问题,又是一阵折腾。

最后发现居然是少了一句:app.UseAuthentication()

太特么坑了,app.UseAuthentication()和UseAuthorization有点像啊,当时弄的时候以为有UseAuthentication了,结果仔细一看还是有区别的,

而且在3.0中这两个都必须要引入,如果只引入UseAuthentication的话就会报错。

而且,这两个的引入顺序不对也会报错!

要先引入UseAuthentication引入UseAuthorization

如果顺序是反的,写成了这样

就会报死循环!一直循环不出来。


从上面的问题可以看出来app.UseAuthentication()中间件必然有一个作用就是处理/signin-oidc,写入cookie!

我们下次来分析一下app.UseAuthentication()方法的源码


还有就是要注意客户端的services.AddAuthentication().AddCookie("Cookies").AddOpenIdConnect(.......)引用的包

.net core2.0本身自带了,但是3.0需要自己的引入,几个包都有这个方法注意不要引入错了。

我这里引用的是Microsoft.AspNetCore.Authentication.OpenIdConnect 3.0

而没有在客户端引入install-package IdentityServer4


最后附上两个例子的下载地址:

.net core2.0的identity server4单点登录

   http://www.tnblog.net/resource/show/aojiancc2/1d5e5583310042fabd824ffffe24ddd8

.net core3.0的

   http://www.tnblog.net/resource/show/aojiancc2/131cffe8fa874090970a57f9e258a873


欢迎加群讨论技术,1群:677373950(满了,可以加,但通过不了),2群:656732739。有需要软件开发,或者学习软件技术的朋友可以和我联系~(Q:815170684)

评价

13787202271

2020/1/10 19:58:33

下载看看


剑轩:@13787202271嗯嗯可以下载哇~有问题回复

2020/1/10 21:54:36 回复

18627704763

2020/3/25 16:09:10

楼主您好  请问有接入过.net framework mvc客户端吗?我连接sso服务器可以正常进入登陆页面 点击登陆后也是地址栏显示/signin-oidc得到404

剑轩:@18627704763没有用过framework的mvc,但是应该原理一样的,你注意看看有没有引入UseAuthentication和UseAuthorization,还有配置,ids4配置错一点就会造成这样的问题,下面贴了两个例子的下载链接你可以试试测试都是能跑通的,下载有问题或者有其他问题在留言交流~

2020/3/25 23:42:13 回复

identity server4 常见错误

登录成功后跳转报错:An error occurred while processing your request可能原因1:登录成功后的跳转地址没有signin-oidc需...

identity server4 实现单点登录

我希望有个如你一般的人我希望有个如你一般的人,如山间清爽的风,如古城温暖的光,从清晨到夜晚,从山野到书房,只要最后...

identity server4 的授权模式

授权模式OAuth2.0 定义了四种授权模式:Implicit:简化模式;直接通过浏览器的链接跳转申请令牌。Client Credentials:客户...

identity server4 四种授权模式

爱情哪有那么复杂,能让你开开心心笑得最甜的那个人就是对的人下面介绍4种模式安全性从低到高客户端模式客户端模式只对客户...

identity server4登录成功后,跳转到原来的页面

我们用identity server4现在访问权限一般都是在某个控制器加上Authorize特性,这样就会访问他的时候跳转到授权中心。这种方...

identity server4身份验证流程分析

当一个项目登录后,另外一个项目直接拿不到用户信息,必须要加上[Authorize]才能获取获取用户信息,所以我们来分析一下加上...

identity server4身份验证中间件源码

通过下载ids4的源码来看,可以把相关的源码放到自己项目中,方便分析整个流程和进行一些个性化定制,下面贴一下身份验证中...

identity server4判断用户是否已经登录

User.Identity.IsAuthenticated实现这句代码就可以判断了

identity server4 cookie相关配置

如果我们这一配置的话在登录后就可以看到cookie信息

.net core 3.1 identity server4 (ClientCredentials模式)

.net core 3.1 Identity Server4 (ClientCredentials模式)[TOC] ClientCredentials 模式的理解 在这之前我先问大家...

.net core 3.1 Ocelot 与 identity server4 鉴权

目录与前言目录链接:.net core Ocelot 简单网关集群熔断架构整合目录.net core 3.1 Identity Server4 (ClientCredentials...

.net core 3.1 identity server4 (Password模式)

.net core 3.1 Identity Server4 (Password模式)[TOC] Password 模式的理解 当应用程序将用户的用户名和密码交换为...

.net core 3.1 identity server4 (Code模式)

.net core 3.1 Identity Server4 (Code模式)[TOC] Code 模式的理解 大致说一下,这种授权模式的意义。A. 用户通...

.net core 3.1 identity server4 (Implicit模式)

.net core 3.1 Identity Server4 (Implicit模式)[TOC] Implicit 模式的理解 A.用户通过浏览器访问客户端,然后客...

.net core 3.1 identity server4 (Hybrid模式)

.net core 3.1 Identity Server4 (Hybrid模式)[TOC] Hybrid 模式的理解 Hybrid 模式相当于(Code模式+Impact模式),所...