(一)IdentityServer 4 基础
1. IdentityServer4 简述
IdentityServer4 是为 ASP.NET CORE 量身定制的实现了 OpenId Connect 和 OAuth 2.0 协议的认证授权中间件,是单点登录统一认证(SSO)的核心框架。
2.什么是 OpenID
OpenID 是一个以用户为中心的数字身份识别框架,它具有开放、分散性。OpenID 的创建基于这样一个概念:我们可以通过 URI (又叫 URL 或网站地址)来认证一个网站的唯一身份,同理,我们也可以通过这种方式来作为用户的身份认证。
简而言之:OpenID 用于身份认证(Authentication)。
3.什么是 OAuth 2.0
OAuth(开放授权)是一个开放标准,目前的版本是2.0。允许用户授权第三方移动应用访问他们存储在其他服务商上存储的私密的资源(如照片,视频,联系人列表),而无需将用户名和密码提供给第三方应用。
OAuth 允许用户提供一个令牌而不是用户名和密码来访问他们存放在特定服务商上的数据。每一个令牌授权一个特定的网站内访问特定的资源(例如仅仅是某一相册中的视频)。这样,OAuth 可以允许用户授权第三方网站访问他们存储在另外服务提供者的某些特定信息,而非所有内容。
OAuth 允许用户提供一个令牌而不是用户名和密码来访问他们存放在特定服务商上的数据。每一个令牌授权一个特定的网站内访问特定的资源(例如仅仅是某一相册中的视频)。这样,OAuth 可以允许用户授权第三方网站访问他们存储在另外服务提供者的某些特定信息,而非所有内容。
OAuth 是 OpenID 的一个补充,但是完全不同的服务。
4.什么是 OpenId Connect
OpenID Connect 1.0 是基于OAuth 2.0协议之上的简单身份层,它允许客户端根据授权服务器的认证结果最终确认终端用户的身份,以及获取基本的用户信息;它支持包括Web、移动、JavaScript在内的所有客户端类型去请求和接收终端用户信息和身份认证会话信息;它是可扩展的协议,允许你使用某些可选功能,如身份数据加密、OpenID提供商发现、会话管理等。
简而言之:OpenId Connect = OIDC = Authentication + Authorization + OAuth2.0。
比如,Facebook、Google、QQ、微博都是比较知名的OpenId Connect提供商
5.相关术语
- User:用户
- Client:客户端
- Resources:Identity Data(身份数据)、Apis
- Identity Server:认证授权服务器
- Token:Access Token(访问令牌)和 Identity Token(身份令牌)
6.JWT(Json Web Token)
Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于 JSON 的开放标准(RFC 7519)。该 token 被设计为紧凑且安全的,特别适用于分布式站点的单点登录(SSO)场景。JWT 的声明一般被用来在身份提供者和服务提供者间传递被认证的用户身份信息,以便于从资源服务器获取资源,也可以增加一些额外的其它业务逻辑所必须的声明信息,该 token 也可直接被用于认证,也可被加密。
7.授权模式
OAuth2.0 定义了四种授权模式:
- Implicit:简化模式;直接通过浏览器的链接跳转申请令牌。
- Client Credentials:客户端凭证模式;该方法通常用于服务器之间的通讯;该模式仅发生在Client与Identity Server之间。
- Resource Owner Password Credentials:密码模式。
- Authorization Code:授权码模式。
通过以上知识点的梳理,我们对 IdentityServer4 的一些相关概念有了大致认识。接下来将介绍如何集成 IdentityServer4。
本文 IdentityServer4 参考来源于链接:https://www.jianshu.com/p/56b577d8f786