跳到主要内容

feishu-auth

feishu-auth 插件支持 飞书 OAuth 2.0 身份认证,作为客户端在访问上游资源前进行身份验证的机制。

启用该插件后,将实现 OAuth 2.0 授权码流程:用户被重定向到飞书完成身份认证,认证完成后携带授权码重定向回来。插件使用该授权码换取访问令牌、获取用户信息,并为后续请求维护会话状态。

当消费者成功通过身份认证后,插件会在请求中添加包含 base64 编码用户信息的 X-Userinfo 请求头,再将请求代理到上游服务。上游服务可据此区分用户并按需实现额外逻辑。

使用示例

在开始之前,请确保你已创建飞书应用并获取所需的凭证。

  1. 创建飞书应用。

    • 进入 飞书开放平台
    • 在开发者后台中创建一个新应用。
    • 将其配置为支持 OAuth 2.0 的网页应用。
  2. 在创建的应用中:

    • 进入 凭证与基础信息,记录你的 app ID 和 app secret。
    • 进入 安全设置,将重定向 URI 设置为与 auth_redirect_uri 配置匹配的地址,例如 http://192.168.2.102:9080/anything
    • 进入 权限与范围,添加获取用户信息所需的权限,例如 contact:user.base:readonly

更多信息请参阅 自建应用开发流程浏览器网页接入指南

在路由上配置飞书认证

以下示例演示如何在路由上启用飞书认证。

创建路由并配置 feishu-auth 插件:

curl "http://127.0.0.1:9180/apisix/admin/routes" -X PUT \
-H "X-API-KEY: ${ADMIN_API_KEY}" \
-d '{
"id": "feishu-auth-route",
"uri": "/anything",
"plugins": {
"feishu-auth": {
"app_id": "cli_1234567890abcdef",
"app_secret": "replace-with-your-app-secret-here",
"secret": "strong-secret",
"auth_redirect_uri": "http://192.168.2.102:9080/anything",
"redirect_uri": "https://accounts.feishu.cn/open-apis/authen/v1/authorize?app_id=cli_xxxx&redirect_uri=http%3A%2F%2F192.168.2.102%3A9080%2Fanything&response_type=code&state=feishu"
}
},
"upstream": {
"type": "roundrobin",
"nodes": {
"httpbin.org:80": 1
}
}
}'

❶ 替换为你的 app ID。

❷ 替换为你的 app secret。

❸ 替换为你的 secret,应为一个随机字符串。

❹ 替换为你在飞书注册的 OAuth 回调重定向 URI。

❺ 根据你的应用信息更新 URI 查询参数。详见 构造授权链接

在浏览器中访问该路由(例如 http://192.168.2.102:9080/anything),你应被重定向到飞书授权页面:

通过飞书登录

成功通过飞书认证后,你应在浏览器中看到上游服务返回的响应:

来自 HTTPBIN 的响应