identity server4 我的学习之路 (第一章)------》 四个授权模式 以及详细解释客户端凭据许可模式

据我观察 想要学好 IDS4 先要了解一下的内容  我将分四次文章向大家介绍我如何从0到1入门Ids4

在ABP认证授权种 同时集成了 Identity 和IdentityServer4

OAuth 2.0授权协议 以及 Opid Connect 

场景:小明每天的工作就是维护自己的微信公众号转发热点文章等操作 可是工作繁琐  一天小明发现了一个第三方软件可以自动转发热点文章等其他操作 

OAuth 2.0  授权码许可模式 通过 授权码换取访问令牌 去访问受保护资源

除了授权码许可模式

OAuth2.0 还有三种 隐式许可  客户端凭据许可  资源拥有者许可

 

 

开放平台-=-第三方应用---小明  核心  颁发访问令牌 使用访问令牌

资源拥有者(小明) 客户端(软文系统) 授权服务(开放平台) 受保护资源(小明的数据) 下图完美诠释了授权码许可模式

授权码 和访问令牌 访问令牌的安全级别更高 

 

 

 

授权码具有时效性 所以可以通过 回调传回浏览器(几秒钟 一分钟)

两次重定向保证了 两个服务之间的通信

 

 

 

 访问令牌 虽然在后端之间交互 但是任然具有有效期 一旦过期 仅需要 刷新令牌(OAuth2.0 刷新令牌机制 OAuth2.0 提供刷新接口)

刷新令牌并且 必须保存在客户端的服务器上 不能放在前端    以及 必须通过第三方后端去调用刷新接口 每一个客户端必须在授权服务器上注册自己(第三方应用必须在授权服务器上注册自己  aap_id ====app_secret应用的密钥 )

第三方应用想要通过用户的认证去授权服务器获取访问令牌 那么 该第三方应用必须在授权服务注册

资源拥有者凭据许可

当第三方第三方应用属于授权服务时  OAuth2.0 提供了 资源拥有者凭据(用户账号+密码) 直接可以使用凭据访问 换取访问令牌 (如果不换取 直接使用敏感信息(账号密码)就非常的不安全)

 

 

 下来介绍

客户端凭据许可(客户端直接使用注册时的Appid去请求访问令牌)=>在没有明确的资源拥有者的场景下 第三方应用访问了不需要用户授权的数据(网站公共数据)没有资源拥有者角色 

 

 

以及

隐式许可 ==》 无服务器 没有后端 没有任何保密可言  使用隐式许可 -----不通过授权码 只需有app_id 即可真假无所谓

总结 四大模式的区别

 

 

Openid Connect

 

 IdentitySerer4 

1.作为我们应用的授权服务器 

2.适用于所有的应用程序 web localhost 移动端 的集中登陆

3.使用于单点登陆与注销 

4.对api的访问控制  

下来演示客户端凭证许可 就是那个通过客户端的App_id +密钥 去换取访问令牌的那个 模式 

Ps:想要通过Identitys4 创建一个认证授权服务器 以及使用他来实现 web认证授权的基本方案 需要准备  1.受保护的Api应用 以及2.访问Api的客户端应用  使用他的ID+密钥 请求Ids4获取访问令牌 去访问受保护的api

 

 创建一个aps.net core空白项目

 

 导入包:IdentityServer4

 

 因为使用客户端许可 我们需要 自定义几个 配置 受保护的api 以及几个客户端.

 

 接着需要Startup中注册该服务

 

 运行 通过postman 访问 颁发令牌

 

 三个参数  客户端ID 客户端 密钥 以及授权模式

 

获取Jwt的授权令牌

 之后 需要创建一个Api项目用来测试

创建webapi项目 引入包 : Microsoft.AspNetCore.Authentication.JwtBearer       3.X

新建一个api 获取User信息

添加中间件 添加服务

 

 因为 这次实例我们采用的是客户端凭证许可 该APi的配置 就是代表着 用Token 去访问受保护的Api 有人会疑惑 Token从哪来? 

Token从这来 记得是Https 并且是Post请求

 

 

 

 接着我们访问我们的Api

 

 401 为什么呢? 原来没有加Token当然是401了 

加上刚刚的Token试试

 

 成功! 

当然 以上是测试环节 我们通过Postman获取的Token 但要是在实际开发环境中我们如何 一个客户端应用程序如何通过授权去访问受保护资源呢 请看我的下一章

 

posted @ 2021-10-07 13:21  三五八团楚云飞  阅读(446)  评论(0)    收藏  举报