跳到主要内容
版本:3.10.x

OAuth 2.0 和 OIDC

API7 网关通过 OAuth 2.0 和 OpenID Connect(OIDC)支持现代化的令牌身份认证。使用 openid-connect 插件,可以将用户身份认证委托给集中式身份提供商(IdP),并对 API 实施细粒度访问控制。

功能

  • 无缝集成:连接任何符合 OIDC 标准的 IdP(Okta、Keycloak、Auth0、Azure AD)。
  • 令牌验证:自动验证 JWT 签名、过期时间和颁发者。
  • 刷新令牌处理:在网关层安全处理令牌刷新流程。
  • 作用域访问控制:根据 OAuth 2.0 作用域或 OIDC 声明限制 API 访问。

配置 OIDC 身份认证

要使用 OIDC 保护路由,需要使用 IdP 的详细信息配置 openid-connect 插件。

开始前,请按照从控制台获取令牌中的步骤获取令牌。

# 为要保护的上游创建服务
curl -k "https://localhost:7443/apisix/admin/services/oidc-protected-service?gateway_group_id={gateway_group_id}" -X PUT \
-H "X-API-KEY: ${API_KEY}" \
-H "Content-Type: application/json" \
-d '{
"name": "oidc-protected-service",
"upstream": {
"type": "roundrobin",
"scheme": "https",
"nodes": [
{ "host": "your-upstream.example.com", "port": 443, "weight": 100 }
]
}
}'

# 在该服务下创建路由并启用 openid-connect 插件
curl -k "https://localhost:7443/apisix/admin/routes/oidc-protected-route?gateway_group_id={gateway_group_id}" -X PUT \
-H "X-API-KEY: ${API_KEY}" \
-H "Content-Type: application/json" \
-d '{
"name": "oidc-protected-route",
"service_id": "oidc-protected-service",
"paths": ["/secure-api/*"],
"plugins": {
"openid-connect": {
"client_id": "YOUR_CLIENT_ID",
"client_secret": "YOUR_CLIENT_SECRET",
"discovery": "https://{IDP_DOMAIN}/.well-known/openid-configuration",
"scope": "openid profile email",
"bearer_only": true
}
}
}'

如果不是在本地运行,请将 localhost 替换为 Admin API 主机。如果 Admin API 使用自签名 TLS 证书,则必须使用 -k 标志。将 {gateway_group_id} 替换为控制台的 Gateway Groups 页面中显示的网关组 ID(快速入门创建的网关组使用 default)。

令牌验证和声明

身份认证成功后,网关可以:

  1. 使用 IdP 的公钥验证令牌签名(通过发现端点自动获取)。
  2. 检查令牌过期时间(exp)和颁发者(iss)。
  3. 将用户信息或声明注入请求头,供上游使用。

后续步骤