2、相关术语
规范、文档和对象模型等都使用特定的术语来表述。
IdentityServer
IdentityServer 是一个 OpenID Connect 提供程序 —— 它实现了OpenID Connect 和 OAuth2 协议。
对于相同的角色,不同的文献将使用不同的术语 —— 你可能也发现了安全令牌服务(Security Token Service),身份提供程序(Identity Provider),授权服务器(Authorization Server),IP-STS 等等。但是他们都具相同的含义:软件中用来向客户端发行安全令牌的部分。
IdentityServer 包含一些职责和功能:
- 保护你的资源
- 使用本地账户存储或外部的身份提供程序来进行用户身份认证
- 提供会话管理和单点登录(Single Sign-on)
- 客户端管理和认证
- 给客户端发行身份令牌和访问令牌
- 验证令牌
用户
用户是通过已注册客户端访问相关数据的人。
客户端
客户端是软件中从 IdentityServer 请求令牌(Token)的部分 —— 既可以是为了认证一个用户(即请求的是 身份令牌),也可以是为了访问一个资源(即请求的是 访问令牌)。一个客户端必须首先注册到 IdentityServer 才能请求相关的令牌。
客户端可以是Web应用程序、移动客户端或桌面应用程序、单页面应用程序(SPA,Single Page Application)、服务器进程等等。
资源
资源就是你想要通过 IdentityServer 保护的东西 —— 既可以是你的用户的 身份信息,也可以是 API。
每个资源都有唯一的名称 —— 客户端使用这些名称来指定他们想要访问的资源。
身份数据(Identity data) 是一个用户的身份信息(又称为 claims),比如 名字(name) 和 邮箱地址(email address)。
API 资源表示的是客户端想要调用的功能 —— 通常通过 Web API 来对 API 资源建模,但这不是必须的。
身份令牌
一个身份令牌表示的是认证过程的输出。它最低限度地标识了某个用户(这也可以称为主身份信息的子集,原文:Called the sub aka subject claim),还包含了用户的认证时间和认证方式。身份令牌可以包含额外的身份数据。
访问令牌
访问令牌用来授予访问某个 API 资源的权限。客户端请求访问令牌,然后被导向 API。访问令牌包含了客户端和用户(如果提供了的话)的相关信息,API通过这些信息来给它们授予数据访问权限。