参考教程
OAuth 公共客户端(PKCE) https://datatracker.ietf.org/doc/html/rfc7636
OpenID Connect Core 1.0 规范 目录
-
引言
1.1. 需求符号和约定
1.2. 术语
1.3. 概述 -
ID Token(身份令牌)
-
认证
3.1. 通过授权码流程进行认证
3.1.1. 授权码流程步骤
3.1.2. 授权端点
3.1.2.1. 认证请求
3.1.2.2. 认证请求验证
3.1.2.3. 授权服务器对终端用户进行身份验证
3.1.2.4. 授权服务器获取终端用户的同意/授权
3.1.2.5. 成功的认证响应
3.1.2.6. 认证错误响应
3.1.2.7. 认证响应验证
3.1.3. 令牌端点
3.1.3.1. 令牌请求
3.1.3.2. 令牌请求验证
3.1.3.3. 成功的令牌响应
3.1.3.4. 令牌错误响应
3.1.3.5. 令牌响应验证
3.1.3.6. ID Token(身份令牌)
3.1.3.7. ID Token 验证
3.1.3.8. 访问令牌验证
3.2. 通过隐式流程进行认证
3.2.1. 隐式流程步骤
3.2.2. 授权端点
3.2.2.1. 认证请求
3.2.2.2. 认证请求验证
3.2.2.3. 授权服务器对终端用户进行身份验证
3.2.2.4. 授权服务器获取终端用户的同意/授权
3.2.2.5. 成功的认证响应
3.2.2.6. 认证错误响应
3.2.2.7. 重定向 URI 片段处理
3.2.2.8. 认证响应验证
3.2.2.9. 访问令牌验证
3.2.2.10. ID Token(身份令牌)
3.2.2.11. ID Token 验证
3.3. 通过混合流程进行认证
3.3.1. 混合流程步骤
3.3.2. 授权端点
3.3.2.1. 认证请求
3.3.2.2. 认证请求验证
3.3.2.3. 授权服务器对终端用户进行身份验证
3.3.2.4. 授权服务器获取终端用户的同意/授权
3.3.2.5. 成功的认证响应
3.3.2.6. 认证错误响应
3.3.2.7. 重定向 URI 片段处理
3.3.2.8. 认证响应验证
3.3.2.9. 访问令牌验证
3.3.2.10. 授权码验证
3.3.2.11. ID Token(身份令牌)
3.3.2.12. ID Token 验证
3.3.3. 令牌端点
3.3.3.1. 令牌请求
3.3.3.2. 令牌请求验证
3.3.3.3. 成功的令牌响应
3.3.3.4. 令牌错误响应
3.3.3.5. 令牌响应验证
3.3.3.6. ID Token(身份令牌)
3.3.3.7. ID Token 验证
3.3.3.8. 访问令牌
3.3.3.9. 访问令牌验证 -
从第三方发起登录
-
声明
5.1. 标准声明
5.1.1. 地址声明
5.1.2. 附加声明
5.2. 声明语言和脚本
5.3. UserInfo 端点
5.3.1. UserInfo 请求
5.3.2. 成功的 UserInfo 响应
5.3.3. UserInfo 错误响应
5.3.4. UserInfo 响应验证
5.4. 使用 Scope 值请求声明
5.5. 使用“claims”请求参数请求声明
5.5.1. 独立声明请求
5.5.1.1. 请求“acr”声明
5.5.2. 独立声明的语言和脚本
5.6. 声明类型
5.6.1. 普通声明
5.6.2. 聚合和分布式声明
5.6.2.1. 聚合声明示例
5.6.2.2. 分布式声明示例
5.7. 声明的稳定性和唯一性 -
作为 JWT 的请求参数传递
6.1. 通过值传递请求对象
6.1.1. 使用 “request” 请求参数的请求
6.2. 通过引用传递请求对象
6.2.1. 引用请求对象的 URI
6.2.2. 使用 “request_uri” 请求参数的请求
6.2.3. 授权服务器获取请求对象
6.2.4. “request_uri” 的依据
6.3. 验证基于 JWT 的请求
6.3.1. 加密的请求对象
6.3.2. 签名的请求对象
6.3.3. 请求参数的组装和验证 -
自签发的 OpenID 提供者
7.1. 自签发的 OpenID 提供者发现
7.2. 自签发的 OpenID 提供者注册
7.2.1. 通过 “registration” 请求参数提供信息
7.3. 自签发的 OpenID 提供者请求
7.4. 自签发的 OpenID 提供者响应
7.5. 自签发的 ID Token 验证 -
主题标识符类型
8.1. 配对标识符算法 -
客户端身份验证
-
签名和加密
10.1. 签名
10.1.1. 非对称签名密钥的轮换
10.2. 加密
10.2.1. 非对称加密密钥的轮换 -
离线访问
-
使用刷新令牌
12.1. 刷新请求
12.2. 成功的刷新响应
12.3. 刷新错误响应 -
序列化
13.1. 查询字符串序列化
13.2. 表单序列化
13.3. JSON 序列化 -
字符串操作
-
实现考虑
15.1. 所有 OpenID 提供者必须实现的功能
15.2. 动态 OpenID 提供者必须实现的功能
15.3. 发现和注册
15.4. 依赖方必须实现的功能
15.5. 实现注意事项
15.5.1. 授权码实现注意事项
15.5.2. Nonce 实现注意事项
15.5.3. 重定向 URI 片段处理实现注意事项
15.6. 兼容性注意事项
15.7. 相关规范和实施者指南 -
安全注意事项
16.1. 请求泄露
16.2. 服务器伪装
16.3. 令牌制造/修改
16.4. 访问令牌泄露
16.5. 服务器响应泄露
16.6. 服务器响应抵赖
16.7. 请求抵赖
16.8. 访问令牌重定向
16.9. 令牌重用
16.10. 窃听或泄露授权码(辅助认证捕获)
16.11. 令牌替换
16.12. 时间攻击
16.13. 其他与加密相关的攻击
16.14. 签名和加密顺序
16.15. 发布者标识符(Issuer Identifier)
16.16. 隐式流的威胁(Implicit Flow Threats)
16.17. TLS 要求(TLS Requirements)
16.18. 访问令牌和刷新令牌的生命周期(Lifetimes of Access Tokens and Refresh Tokens)
16.19. 对称密钥的熵(Symmetric Key Entropy)
16.20. 请求需要签名(Need for Signed Requests)
16.21. 请求需要加密(Need for Encrypted Requests)
16.22. HTTP 307 重定向(HTTP 307 Redirects)
16.23. iOS 上的自定义 URI 方案(Custom URI Schemes on iOS)
-
隐私考虑(Privacy Considerations)
17.1. 个人身份信息(Personally Identifiable Information)
17.2. 数据访问监控(Data Access Monitoring)
17.3. 关联(Correlation)
17.4. 离线访问(Offline Access) -
IANA 考虑事项(IANA Considerations)
18.1. JSON Web Token 声明注册(JSON Web Token Claims Registration)
18.1.1. 注册内容(Registry Contents)
18.2. OAuth 参数注册(OAuth Parameters Registration)
18.2.1. 注册内容(Registry Contents)
18.3. OAuth 扩展错误注册(OAuth Extensions Error Registration)
18.3.1. 注册内容(Registry Contents)
18.4. URI 方案注册(URI Scheme Registration)
18.4.1. 注册内容(Registry Contents) -
参考文献(References)
19.1. 规范性参考文献(Normative References)
19.2. 参考文献(Informative References)
附录 A. 授权示例(Authorization Examples)
A.1. 使用 response_type=code 的示例(Example using response_type=code)
A.2. 使用 response_type=id_token 的示例(Example using response_type=id_token)
A.3. 使用 response_type=id_token token 的示例(Example using response_type=id_token token)
A.4. 使用 response_type=code id_token 的示例(Example using response_type=code id_token)
A.5. 使用 response_type=code token 的示例(Example using response_type=code token)
A.6. 使用 response_type=code id_token token 的示例(Example using response_type=code id_token token)
A.7. 示例中使用的 RSA 密钥(RSA Key Used in Examples)
附录 B. 致谢(Acknowledgements)
附录 C. 通知(Notices)
§ 作者地址(Authors’ Addresses)
这些内容涉及 OpenID Connect 规范的技术细节、隐私保护以及一些注册机制,适用于在身份认证和授权领域使用 OpenID Connect 协议时的设计与实现。