IdentityServer4 的多种模式

参考:英文文档及教程
jwt.io:token提高可视化网站

IdentityServer4 的多种模式

(一)客户端授权模式

客户端授权模式(Client Credentials Grant)指客户端以自己的名义,而不是以用户的名义,向认证|授权服务器进行认证。授权服务器不做任何要求,只要需要看看本次来认证的请求是不是属于提前约束好的客户端,如果是,那么直接颁发令牌-token。

1、理解:
  • 什么是客户端、用户、认证|授权服务器?:当我们以微信身份“皮皮鬼”登录爱奇艺时。皮皮鬼是用户,手机上的android应用程序是客户端,微信是认证|授权服务器。
  • 什么是提前约束?:认证|授权服务器内应该保存有 认证的客户端信息,该客户端可访问的api资源(内存模式、数据库模式)。内存:信息直接写在代码中;数据库,信息写在数据库中。
    在这里插入图片描述
    注释:
    (A)Client Authorization:客户端向认证服务器进行身份认证,并要求一个访问令牌。
    (B)Access Token:认证服务器确认无误后,向客户端提供访问令牌。
2、程序步骤:

步骤一:创建IdentityServer服务器
步骤二:identityServer4创建API资源项目

过程详解图:
在这里插入图片描述
注意:按照本教程代码,执行过程中,API资源IP:6000;认证|授权服务器IP:5000。
他们在Properties的launchSettings.json中定义。

3、补充说明

如上示例所示,可以根据postman验证访问上述过程。
也可以创建一个无界面的客户端(控制台应用)来验证。
参考链接:创建使用[ClientCredentials客户端凭证]授权模式的客户端

(二)【资源所有者密码凭证】授权模式的客户端(密码模式)

密码模式(Resource Owner Password Credentials Grant)中,用户向客户端提供自己的用户名和密码。客户端使用这些信息,向“服务商供应商”索要授权。
在这种模式中,用户必须把自己的密码给客户端,但是客户端不得存储密码,这通常用在用户对客户端高度信任的情况下,比如客户端时操作系统的一部分,或者由一个著名公司出品。而认证服务器只有在其他授权模式无法执行的情况下,才能考虑使用这种模式。

1、理解:

例如,我用微信登录爱奇艺,可以用用户名密码登录。这个情景里,我是资源所有者,爱奇艺是客户端,微信是授权服务器。我将用户名密码交给爱奇艺,爱奇艺用这个用户名密码来获得微信的一些资源。因此,这通常用在用户对客户端高度信任的情况下。但是,由于多了一层用户名密码校验,相比于客户端授权模式更安全。具体流程如下:
在这里插入图片描述
(A)用户向客户端提供用户名和密码
(B)客户端将用户名和密码发给认证服务器,向后者请求令牌。
(C)认证服务器确认无误后,向客户端提供访问令牌。

2、程序步骤:

本文用了无UI组件的模式来进行密码模式的简单实践,这里同样使用内存模式。
主要分为三步:

  1. 配置服务器
  2. 获取token
  3. 获取用户信息
  4. 获取API资源

步骤:密码模式程序编写步骤

(三)授权码模式

参考文档:IdentityServer4授权码模式介绍和代码实操演练

1、背景

密码模式上的升级,解决了密码模式的一些问题。
即:浏览器(用户代理)可见token,这可能会造成恶意访问。为了解决这个用户代理的问题,诞生了授权码模式。

2、理解

在这里插入图片描述
流程

(A)用户访问客户端,后者将前者导向认证服务器。由于用户直接访问客户端被拦截,重定向到授权服务器。授权服务器接受到请求后,返回一个页面。让用户来输入账号密码

(B)用户选择是否给予客户端授权。即:填写用户名密码

(C)若用户给予授权,认证服务器将用户导向客户端事先指定的"重定向URI"(redirection URI),同时附上一个授权码。响应一个code给代理浏览器,需要区分的是,这里的code并不是token。浏览器内code可见

(D)客户端收到授权码,附上早先的"重定向URI",向认证服务器申请令牌。这一步是在客户端的后台的服务器上完成的,对用户不可见。客户端程序利用从浏览器那里得到的code,来访问授权服务器。

(E)认证服务器核对了授权码和重定向URI,确认无误后,向客户端发送访问令牌(access token)和更新令牌(refresh token)。授权服务器辨识code,之后将颁发token。需要区分的是,token在客户端颁发,可以避免在用户代理中泄露token

3、程序编写
  1. QuickStartUI搭建。参考链接:十分钟搭建IdentityServer4及QuickStart UI
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值