第73篇 IdentityServer4的简单介绍
1.什么是IdentityServer4?
它是一个中间件服务框架,集成OIDC与OAuth2.0,
方便搭建任意多个项目。
IdentityServer4的组成
- Identity身份
- Server服务器
- 4版本
源代码:https://github.com/IdentityServer 【1 ~ 4】
demo:https://demo.identityserver.io/
1.1 Ids4能做些什么?
- 主要的单体应用,微服务使用不多,还不如使用jwt等状态码
- 保护你的资源
- 颁发令牌、验证令牌、刷新令牌
- 使用本地帐户或通过外部身份提供程序对用户进行身份验证
- 提供会话管理和单点登录
- 管理和验证客户机
- 支持非常多的协议实现和可扩展点
2.常见术语解析
3.学习过程中的知识点
3.1 JWT与OAuth2.0 👉
-
JWT是一种具体的,自身包含特定声明逻辑的,Token实现框架。(账号密码登录)
JWT提供了一种用于发布接入令牌(Access Token),并对发布的签名接入令牌进行验证的方法。 令牌(Token)本身包含了一系列声明,应用程序可以根据这些声明限制用户对资源的访问。 -
OAuth一种授权协议,是规范,不是实现。(QQ授权机制)
OAuth2是一种授权框架,提供了一套详细的授权机制。用户或应用可以通过公开的或私有的设置,授权第三方应用访问特定资源。
【比如快递员进小区,给我送快递】
3.2 OAuth2.0简介 👉
OAuth(开放授权)是一个开放标准,允许用户让第三方应用访问该用户在某一网站上存储的私密的资源(如照片,视频,联系人列表),而无需将用户名和密码提供给第三方应用。就比如我用QQ登录博客园,那博客园(第三方应用)的昵称就可以是我的QQ(某网站)昵称,它获取到了我的QQ昵称,并存到了博客园的数据库,我以后就一直可以使用QQ来登录博客园,但是博客园却不知道我QQ的用户名和密码
3.2.1 四种方式
3.3 OpenID、OIDC 和 OAuth 的区别 👉
- OpenID 是认证,OAuth2.0是授权
- Authentication、Authorization
- 一个是登录,一个是授权
- 认证 = 【是不是】,授权 =【给不给】
-
OpenID更简单,只提供一个认证,和字符串去中心化的登录认证,只需要识别URL和OpenID即可,方便——【数字身份识别框架】。
-
OAuth是OpenID的一个补充,但是完全不同的服务,完全不需要提供任何信息给第三方,包括用户名
-
OpenID Connect 兼容 OAuth2.0 + OpenID
- OpenID Connect和OAuth2非常相似 —— 实际上前者是后者的顶级扩展。它们把两个基础安全问题(身份认证和 API 访问)合并成了一个单一的协议。
3.4 常用的几种 Ids4 模式 👉
3.5 其他登录
4 框架包含的内容
-
核心的 IdentityServer 对象模型
-
服务和中间件
-
配置数据和操作数据
-
自定义扩展用户数据
-
Quickstart UI
iex ((New-Object System.Net.WebClient).DownloadString('https://raw.githubusercontent.com/IdentityServer/IdentityServer4.Quickstart.UI/release/get.ps1'))
5. Ids4 优劣点
优点:
- 框架集成了 OCID 和 OAuth2.0 ,更全
- 可以做自定义扩展,更方便
- 搭配 ocelot 等,更系统
- 单独登录,注销登录,外部登录等等
劣点:
- 个人觉得太复杂,不太好定制(微软提供的 owin 中间件和 identity, 自己定制了一个 oauth2 认证服务器)
- 适合大中型项目,小项目就别用了
- 适合单体,不适合微服务