openid-connect
tip
教程:
该插件提供两种使用场景:
应用之间认证授权:将 设置为
true
,并配置introspection_endpoint
或public_key
属性。该场景下,请求头(Header)中没有令牌或无效令牌的请求将被拒绝。
令牌内省是通过针对 OAuth 2.0 授权的服务器来验证令牌及相关请求,详情请阅读 。
以下示例是在路由上启用插件。该路由将通过内省请求头中提供的令牌来保护上游:
以下命令可用于访问新路由:
在此示例中,插件强制在请求头中设置访问令牌和 Userinfo 对象。
当 OAuth 2.0 授权服务器返回结果里除了令牌之外还有过期时间,其中令牌将在 APISIX 中缓存直至过期。更多信息请参考:
- lua-resty-openidc 的文档和源代码。
exp
字段的定义:。
公钥内省
以下示例展示了如何将公钥添加到路由中:
通过 OIDC 依赖方认证流程进行身份验证
当一个请求在请求头或会话 Cookie 中不包含访问令牌时,该插件可以充当 OIDC 依赖方并重定向到身份提供者的授权端点以通过 OIDC authorization code flow。
一旦用户通过身份提供者进行身份验证,插件将代表用户从身份提供者获取和管理访问令牌和更多信息。该信息当前存储在会话 Cookie 中,该插件将会识别 Cookie 并使用其中的信息,以避免再次执行认证流程。
以下示例是将此操作模式添加到 Route:
在以上示例中,该插件可以强制在配置的请求头中设置访问令牌、ID 令牌和 UserInfo 对象。
如果遇到
the error request to the redirect_uri path, but there's no session state found
的错误,请检查redirect_uri
参数配置:APISIX 会向身份认证服务发起身份认证请求,认证服务完成认证、授权后,会携带 ID Token 和 AccessToken 重定向到redirect_uri
所配置的地址(例如 ),接着再次进入 APISIX 并在 OIDC 逻辑中完成 Token 交换的功能。因此redirect_uri
需要满足以下条件:
redirect_uri
(scheme:host
)的scheme
和host
是身份认证服务视角下访问 APISIX 所需的值。