1. 基础篇

a)      介绍

                 i.          授权服务器 存储

                ii.          用户/客户端/资源定义信息,颁发token

  1. 定义客户端

a)     

  1. 定义Scope

a)     

  1. 定义资源

a)     

               iii.          资源

简单理解->后台Api站点

               iv.          客户端

要请求Api站点的浏览器,或者是一个站点

 

  1. Scope

a)      作用域简单理解为权限

b)      在授权服务器定义

c)      资源可以要求客户端有哪些Scope才能访问,资源可以自由定义多种规则,每种规则可以包含多个scope

此规则要求有scope api3 才能访问

 

 

  1. grant_type 验证类型

a)     

b)      在授权服务器定义

c)      可以自行扩展自己的验证类型 微信登录扩展就在这里

d)      授权服务器根据grant_type判断采用哪种类型

e)      实现如上图,Password 模式没有默认实现 需要自己实现

                v.          用户

使用客户端请求资源的人

 

b)      使用方式

                 i.          账密登录

  1. 用户打开浏览器(未登录)
  2. 浏览器输入账号密码
  3. 浏览器带上账密请求授权服务器
  4. 授权服务器判断账号密码正确返回token
  5. 浏览器带上token请求资源

                ii.          Code模式

  1. 用户访问客户端,客户端将页面跳转到授权服务器。
  2. 用户在新页面输入账号密码登录。
  3. 登录后,授权服务器将页面跳转到客户端事先指定的"重定向URI"(redirection URI),同时附上一个授权码(Code)。
  4. 客户端收到授权码,附上早先的"重定向URI",向授权服务器申请令牌。这一步是在客户端的后台的服务器上完成的,对用户不可见。
  5. 授权服务器核对了授权码和重定向URI,确认无误后,向客户端发送访问令牌(access token)和更新令牌(refresh token)。
  6. 拿到令牌后,可以尽情的请求资源服务器了

c)      持久化到数据库

                 i.          ids4默认是内存实现相关接口,只需要实现对应的接口就可以

                ii.          Storage定义了相关操作接口及类

               iii.          EntityFramework.Storage 提供了默认EF实现及相关dbContext 数据库实体类

  1. SqlServer项目提供了默认SqlServer的迁移数据

d)      扩展

                 i.          扩展验证方式 如微信登录

 

              在default中就是自定义的扩展验证方法,实现 IExtensionGrantValidator 加到依赖注入即可 ,ids4使用接口实现如下

IExtensionGrantValidator.Result= new GrantValidationResult(TokenRequestErrors.InvalidGrant);

实现接口中new一个对象即可

                 i.          扩展原生实现

a)      Ids4中的接口都是注入,实现自己的接口替换注入即可

                ii.          扩展其他存储方式

a)      实现IdentityServer4.Storage中的对应接口即可 查询任意存储方式都行