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

identity server4 四种授权模式

8883人阅读 2019/12/21 17:12 总访问:5182344 评论:0 收藏:0 手机
分类: 微服务

爱情哪有那么复杂,能让你开开心心笑得最甜的那个人就是对的人



下面介绍4种模式安全性从低到高


客户端模式

客户端模式只对客户端进行授权,不涉及到用户信息。如果你的api需要提供到第三方应用,第三方应用自己做用户授权,不需要用到你的用户资源,就可以用客户端模式,只对客户端进行授权访问api资源。

这是一种最简单的模式,只要client请求,我们就将AccessToken发送给它。这种模式是最方便但最不安全的模式。因此这就要求我们对client完全的信任,而client本身也是安全的


密码模式

需要客户端提供用户名和密码,密码模式相较于客户端凭证模式。通过User的用户名和密码向Identity Server申请访问令牌。

如果你高度信任某个应用,RFC 6749 也允许用户把用户名和密码,直接告诉该应用


(授权码)隐藏模式

密码模式将用户的密码暴露给了客户端,这无疑是不安全的,隐藏模式可以解决这个问题,由用户自己在IdentityServer服务器进行登录验证,客户端不需要知道用户的密码

有些 Web 应用是前后端分离的纯前端应用,没有后端。这时就不能用上面的授权码模式了,必须将令牌储存在前端。

这种方式没有授权码这个中间步骤,所以称为(授权码)"隐藏式"(implicit)。


授权码模式

授权码模式隐藏码模式最大不同是授权码模式不直接返回token,而是先返回一个授权码,然后再根据这个授权码去请求token。这比隐藏模式更为安全。从应用场景上来区分的话,隐藏模式适应于全前端的应用,授权码模式适用于有后端的应用,因为客户端根据授权码去请求token时是需要把客户端密码转进来的,为了避免客户端密码被暴露,所以请求token这个过程需要放在后台


OpenIdConnect

OpenIdConnect是OAuth2.0与OpenId的结合,并加入了一个重要的概念:id_token。我们之前所讲的token是用于访问授权的access_token,而id_token是用于身份验证的,作用完全不同,这一点要区分开来。access_token是OAth2.0特性,而id_token是OpenIdConnect方案为改善OAuth2.0方案在身份验证方面的薄弱而加入的特性。

客户端获取Id_token与隐藏模式和授权码模式一样,都是通过redirect_url参数返回的,所以前面的四种模式中的客户端模式与密码模式不支持获取id_token,而授权码模式受限于流程,必需先取得Code才能取到token,所以不能直接支持获取id_token,如果需求是使用授权码模式,同时又需要id_token,OpenIdConnect支持第五种模式:混合模式(Hybrid),就是基于隐藏模式与授权码模式的结合


简单说一下自己的理解:

授权码模式:

安全性最高,token不会暴露,token的获取都是在服务器与服务器端完成的

(授权码)隐藏模式:

安全性次之,token会直接返回到访问的地方,适用于前后端分离的项目(前后端分离后,只能把token保存到前端了,为他只有前端没有服务器)

密码模式:

因为这种模式要求调用方直接给出用户名与密码,适用于服务器与服务器之间高度信任的调用,自己项目中不同模块之间的调用。

前面写的四种OAuth2.0实现模式只涉及到IdentityServer4的OAuth2.0特性,并没有涉及到OenId方面的。OpenIdConnect是OAuth2.0与OpenId的结合,并加入了一个重要的概念:id_token。我们之前所讲的token是用于访问授权的access_token,而id_token是用于身份验证的,作用完全不同,这一点要区分开来。access_token是OAth2.0特性,而id_token是OpenIdConnect方案为改善OAuth2.0方案在身份验证方面的薄弱而加入的特性。


客户端获取Id_token与隐藏模式和授权码模式一样,都是通过redirect_url参数返回的,所以前面的四种模式中的客户端模式与密码模式不支持获取id_token,而授权码模式受限于流程,必需先取得Code才能取到token,所以不能直接支持获取id_token,如果需求是使用授权码模式,同时又需要id_token,OpenIdConnect支持第五种模式:混合模式(Hybrid),就是基于隐藏模式与授权码模式的结合


OAuth 2.0 的四种方式

http://www.ruanyifeng.com/blog/2019/04/oauth-grant-types.html

https://www.cnblogs.com/liujiabing/p/11482120.html

https://www.cnblogs.com/liujiabing/p/11563996.html




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

评价

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

使用identity server4 做单点登录,登录成功后跳转到/signin-oidc得到404,纠结了很久,记录一下。我这里的环境是vs2019和.n...

identity server4 常见错误

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

identity server4 实现单点登录

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

identity server4 的授权模式

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

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模式),所...