OpenID Connect (OIDC)
OpenID Connect(简称 OIDC)是一个基于 OAuth 2.0 协议的身份认证层,它允许客户端应用程序验证用户的身份,并获取用户的基本信息(称为 profile 信息),这些信息通过一个称为 ID Token 的安全令牌提供。
OIDC 的核心作用
- OAuth 2.0 解决了**授权(Authorization)**的问题:某个应用能否访问某些资源。
- OpenID Connect 在其基础上解决了**身份认证(Authentication)**的问题:你是谁?
组成结构
+-------------+ +---------------+ +-----------------+
| 用户浏览器 | <------> | 客户端应用 | <------> | 身份提供方(OP) |
+-------------+ +---------------+ +-----------------+
↑ ↑
|--- ID Token, Access Token ----|
项目 | 说明 |
---|---|
ID Token | JWT 格式的身份令牌,包含用户身份信息(如 sub、email、name 等) |
UserInfo Endpoint | 一个标准化的 API 接口,客户端可以用 Access Token 请求更多用户资料 |
Discovery Endpoint | 提供元信息,比如授权端点、token 端点、密钥等 |
Scopes | 用于控制访问权限,常用的有 openid(必须)、profile、email 等 |
Claims | 表示用户信息的字段,如 sub、name、email |
示例 ID Token(JWT 结构):
{
"iss": "https://accounts.google.com",
"sub": "1234567890",
"name": "Alice",
"email": "alice@example.com",
"iat": 1680000000,
"exp": 1680003600
}
例子 - 一个典型 OIDC 登录流程(简化版)
- 用户点击登录,客户端跳转到身份提供方(如 Google)的授权端点。
- 用户登录并同意授权。
- 身份提供方重定向回客户端,同时返回一个授权码。
- 客户端使用授权码换取:
- Access Token(访问资源用)
- ID Token(用户身份信息)
- 客户端解析 ID Token,完成登录认证流程。
Reference
FEATURED TAGS
algorithm
algorithmproblem
architecturalpattern
architecture
aws
blockchain
c#
cachesystem
codis
compile
concurrentcontrol
database
dataformat
datastructure
debug
design
designpattern
distributedsystem
django
docker
domain
engineering
freebsd
git
golang
grafana
hackintosh
hadoop
hardware
hexo
http
hugo
ios
iot
java
javaee
javascript
kafka
kubernetes
linux
linuxcommand
linuxio
lock
macos
markdown
microservices
mysql
nas
network
networkprogramming
nginx
node.js
npm
oop
openwrt
operatingsystem
padavan
performance
programming
prometheus
protobuf
python
redis
router
security
shell
software testing
spring
sql
systemdesign
truenas
ubuntu
vmware
vpn
windows
wmware
wordpress
xml
zookeeper