Asp.Net Core IdentityServer4 中的基本概念
Jlion 人气:0
## 一、前言
这篇文章可能大家会觉得很空洞,没有实际的实战东西,主要是自己整理出来的IdentityServer4 的一些概念性的东西;如果你对`IdentityServer4`有过一定的实战经验,可以跳过不需要阅读该文章,后续我会以一个Demo 来给大家带来IdentityServer4深入的实战分享 。
## 二、概述
`IdentityServer4`是一个用于ASP.Net Core的`OpenID Connect`和`OAuth 2.0`框架
### 2.1 什么是OAuth 2.0?
`OAuth 2.0`是授权的行业标准协议。OAuth 2.0侧重于客户端开发人员的简单性,同时为web应用程序、桌面应用程序、移动应用等提供特定的授权流。该规范及其扩展正在IETF OAuth工作组内开发。
简单说,OAuth 就是一种授权机制。数据的所有者告诉系统,同意授权第三方应用进入系统,获取这些数据。系统从而产生一个短期的进入令牌(token),用来代替密码,供第三方应用使用。
OAuth 2.0 规定了四种获得令牌的流程。你可以选择最适合自己的那一种,向第三方应用颁发令牌。不管哪一种授权方式,第三方应用申请令牌之前,都必须先到系统备案,说明自己的身份,然后会拿到两个身份识别码:客户端 ID(client ID)和客户端密钥(client secret)。这是为了防止令牌被滥用,没有备案过的第三方应用,是不会拿到令牌的。下面就是这四种授权方式。
- authorization code(授权码模式)
- implicit(简化模式)
- resource owner password credentials(密码模式)
- client credentials(客户端模式)
OAuth 整体流程图:
![](https://img-blog.csdnimg.cn/20190708144314592.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dxeTI0OA==,size_16,color_FFFFFF,t_70)
具体的OAuth 2.0 四大授权方式请参考 阮一峰 的博客 [OAuth 2.0 的四种方式](http://www.ruanyifeng.com/blog/2019/04/oauth-grant-types.html)
### 2.2 什么是OpenId Connect
`OpenID Connect的` 的简称是`OIDC`,OIDC=(Identity, Authentication) + OAuth 2.0。它在OAuth2上构建了一个身份层,是一个基于OAuth2协议的身份认证标准协议。我们都知道OAuth2是一个授权协议,它无法提供完善的身份认证功能,OIDC使用OAuth2的授权服务器来为第三方客户端提供用户的身份认证,并把对应的身份认证信息传递给客户端,且可以适用于各种类型的客户端(比如服务端应用,移动APP,JS应用),且完全兼容OAuth2,也就是说你搭建了一个OIDC的服务后,也可以当作一个OAuth2的服务来用。应用场景如图:
![](https://identityserver4.readthedocs.io/en/latest/_images/protocols.png)
### 2.3 IdentityServer4功能特性
`IdentityServer4 `集成到你的应用具有如下功能特点:
- Authentication as a Service:可以为你的应用(如网站、本地应用、移动端、服务)做集中式的登录逻辑和工作流控制。IdentityServer是完全实现了OpenID Connect协议标准
- Single Sign-on / Sign-out:在多个应用程序类型上进行单点登录(和单点退出)。
- Access Control for APIs:为不同类型的客户端,例如服务器到服务器、web应用程序、SPAs和本地/移动应用程序,发出api的访问令牌。
- Federation Gateway:支持来自Azure Active Directory, Google, Facebook这些知名应用的身份认证,可以不必关心连接到这些应用的细节就可以保护你的应用。
- Focus on Customization:最重要的是identityserver可以根据需求自行开发来适应应用程序的变化。identityserver不是一个框架、也不是一个盒装产品或一个saas系统,您可以编写代码来适应各种场景。
![](https://img2018.cnblogs.com/blog/1413706/201812/1413706-20181220175002815-985346258.png)
### 2.4 IdentityServer4 可以帮助我们做什么?
IdentityServer是将规范兼容的OpenID Connect和OAuth 2.0端点添加到任意ASP.NET Core应用程序的中间件。通常,您构建(或重新使用)包含登录和注销页面的应用程序,IdentityServer中间件会向其添加必要的协议头,以便客户端应用程序可以与其对话 使用这些标准协议。
![](https://identityserver4.readthedocs.io/en/latest/_images/middleware.png)
如果您觉的不错,请微信扫码关注 【dotNET博士】公众号,后续给您带来更精彩的分享
![](https://img2020.cnblogs.com/blog/824291/202003/824291-20200302122728756-456586765.jpg)
以上如果有错误的地方,请大家积极纠正,谢谢大家的支持!!
加载全部内容