IdentityServer4源码介绍IdentityServer4 源码介绍
IdentityServer4 项⽬托管在 github上,Releases 下载地址:
7⼩时前,发布了 4.0 版本,就以这个版本为例,这⾥我选择下载 zip 包
解压,根据 GitHub 上的说明先编译⼀下
装好 sdk,git,在解压的项⽬根⽬录运⾏ build.ps1 或者 build.sh 即可。
主要关注2个⽂件夹,⼀个是例⼦ samples,⼀个是源码 src
src ⽬录下,有以下⼏个⽂件夹
samples 下有以下⼏个⽂件夹
结合 IdentityServer4 的官⽅⽂档来说说吧⾸先这是⽂档地址:
INTRODUCTION 这块主要是⼀些理论的东西,直接看完可能⼀头雾⽔,所以有个⼤概的了解之后,还是动⼿写下代码,就⽐较能理解它是什么了。
跟着 QUICKSTARTS 动⼿写⼀写,很快就能理解 IdentityServer 是什么,要怎么⽤。了解各 grant type,知道怎么修改 config ⽂件,怎么配置 api,客户端怎么认证基本就ok了。
这块都是⼀些简单的⼊门例⼦,代码在 samples\Quickstarts
第⼀个例⼦:1_ClientCredentials 主要介绍使⽤ ClientCredentials 类型的认证⽅式。
// no interactive user, use the clientid/secret for authentication
AllowedGrantTypes = GrantTypes.ClientCredentials,
第⼆个例⼦:2_InteractiveAspNetCore 主要介绍使⽤ Code 类型的认证⽅式,这个应该是最复杂、最核⼼的⽅式。
第三个例⼦ 3_AspNetCoreAndApis ,也是 Code 类型,增加了使⽤ refresh token 这个东西。
公司介绍源码第四个例⼦ 4_JavaScriptClient,也还是 Code 类型,主要是换成了 js 客户端
第五个例⼦ 5_EntityFramework ,前⾯的⼏个例⼦ IdentityServer 的数据都是存在内存中,这⾥使⽤ ef core 存储到数据库中
这⾥可以看到 configuration 数据和 Operational 数据使⽤ sqlserver 来存储,但是⽤户信息仍使⽤内存的 TestUser。
第六个例⼦ 6_AspNetIdentity
不使⽤内存的⽤户信息,使⽤ aspnet core Identity 来管理⽤户,
例⼦与源码结合,
IdentityServer4 就是 IdentityServer4 的源码;
AspNetIdentity 就是例⼦6中 asp net core identity 管理⽤户的源码
例⼦5中使⽤ ef core 做持久化的源码就是剩下⼏个,先是 EntityFramework 然后⼜依赖 EntityFramework.Storage 最后依赖 Storage。