1、开篇
首先明确一点,文章只是学习过程的笔记,参考目前网络上的博客,主要便于自己加深理解,同时也督促自己持续学习,没有其他目的。感谢网上资源的提供者。
IdentityServer是为ASP.NET Core2.x系列打造的一款基于OpenID Connect和OAnth2.0认证框架。其特点或者说是用途有以下几点:
认证服务
可以为网站、本地应用、移动端、服务等做集中的登录逻辑和工作流控制(未接触)
单点登录
在各种类型的应用中实现单点登录登出(SSO)
API访问控制
为客户端颁发access token,比如服务之间的通讯,网站应用、本地应用或者移动应用等
2、 专业术语
身份认证服务器(IdentityServer)是基于OpenId Connect协议标准的身份认证和授权程序,在软件应用中为客户端颁发令牌并用于安全访问。
可以实现的功能:
保护你的资源
使用本地账户或通过外部身份提供程序对用户进行身份验证
会话管理和单点登录
管理和验证客户机
向客户发出标识和访问令牌
验证令牌
需要了解几个专业术语:
用户(User)
用户是使用已注册的客户端(在IdentityServer中已经注册)访问资源的人
客户端(Client)
客户端就是从IdentityServer请求令牌的软件(可以简单理解为一个app),既可以通过身份认证领来来验证识别用户身份,又可以通过授权令牌来访问服务器的资源。但是客户端首先必须在申请令牌前已经在IdentityServer服务中注册过。
客户端可以是,web应用程序、app或者桌面应用程序,SPA,服务器进程等
资源(Resources)
资源就是你想用IdentityServer保护的东西,可以是用户的身份数据或者api资源
每个资源都有一个唯一的名称,客户端使用这个唯一的名称来确定想访问哪一个资源(在访问之前,实际IdentityServer服务端已经配置好了那个客户端可以访问哪个资源,所以你不必理解为客户端只要指定名称他们就可以随便访问任何一个资源)。
用户的身份信息实际由一组claim组成,例如姓名或者邮件等都会包含在身份信息中(将来通过Identityserver校验后都会返回给被调用的客户端)。
API资源及时客户端需要调用的功能(通常以Json或者xml的形式返回给客户端,例如webapi,webservice,wcf),这里我们习惯使用json形式,通过webapi来建立模型。
身份令牌(Identity Token)
身份令牌指的就是对认证过程的描述。它标识某个用户的主要身份信息(claim)和该用户的认证时间和认证方式。当然也可以包含额外身份信息,根据开发具体情况而定。
访问令牌(Access Token)
访问令牌指的是客户端访问api资源。客户端请求访问令牌,然后使用令牌来访问api资源。 访问令牌包含有关客户端和用户的信息(如果存在)。 API使用该信息来授权访问其数据。