代码改变世界

IdentityServer4 源码介绍

2020-06-20 11:02  ylka  阅读(405)  评论(0编辑  收藏  举报

IdentityServer4 源码介绍

IdentityServer4 项目托管在 github上,Releases 下载地址:https://github.com/IdentityServer/IdentityServer4/releases

 

7小时前,发布了 4.0 版本,就以这个版本为例,这里我选择下载 zip 包

解压,根据 GitHub 上的说明先编译一下

 

装好 sdk,git,在解压的项目根目录运行 build.ps1 或者 build.sh 即可。

主要关注2个文件夹,一个是例子 samples,一个是源码 src

 

 

 src 目录下,有以下几个文件夹

samples 下有以下几个文件夹

 

 

结合 IdentityServer4 的官方文档来说说吧

首先这是文档地址:https://identityserver4.readthedocs.io/en/latest/

 

 

 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。