modify: auth插件拆分,将token签发部分交给网关
This commit is contained in:
@@ -109,6 +109,8 @@ enabled = false # 是否启用豆包 AI 分析告警图片
|
|||||||
|
|
||||||
[workers.config.ip_sound_column]
|
[workers.config.ip_sound_column]
|
||||||
enabled = false # 是否开启IP音柱报警
|
enabled = false # 是否开启IP音柱报警
|
||||||
|
volume = 50
|
||||||
|
tts = {}
|
||||||
|
|
||||||
[workers.config.alarm_forward]
|
[workers.config.alarm_forward]
|
||||||
# enabled = false # 是否启用告警转发到外部平台
|
# enabled = false # 是否启用告警转发到外部平台
|
||||||
|
|||||||
@@ -1,13 +0,0 @@
|
|||||||
[POST]
|
|
||||||
cacheable = false
|
|
||||||
auth_required = false
|
|
||||||
summary = "登录"
|
|
||||||
docstring = "根据用户名和密码进行登录,登录成功返回token,获取请求需带式token进行请求"
|
|
||||||
params = ["username: str", "password: str"]
|
|
||||||
|
|
||||||
[POST.response_model]
|
|
||||||
result = {type = "str", required = true}
|
|
||||||
token = {type = "str", required = true}
|
|
||||||
message = {type = "str", required = true}
|
|
||||||
timestamp = {type = "float", required = false}
|
|
||||||
|
|
||||||
@@ -0,0 +1,34 @@
|
|||||||
|
# ====== 插件注册信息(控制加载方式) ======
|
||||||
|
[workers]
|
||||||
|
type = "auth_oauth"
|
||||||
|
module = "plugins.auth_oauth"
|
||||||
|
factory = "create_workers"
|
||||||
|
cleanup = "cleanup"
|
||||||
|
count = 1
|
||||||
|
# 身份源插件持有签名密钥的使用方(issue_token),走 inline 与网关同信任域;
|
||||||
|
# external 部署前需先解决密钥下发问题(见插件 README 安全说明)
|
||||||
|
load_mode = "inline"
|
||||||
|
|
||||||
|
[worker]
|
||||||
|
name = "auth_oauth"
|
||||||
|
version = "0.1.0"
|
||||||
|
description = "第三方授权登录示例(GitHub OAuth / 手机验证码)"
|
||||||
|
config_version = "1.0"
|
||||||
|
defaults = { method = "GET", ttl = 30, timeout = 10.0, auth_required = false, cacheable = false }
|
||||||
|
|
||||||
|
[worker.registration]
|
||||||
|
router_prefix = "/auth/oauth"
|
||||||
|
tags = ["auth_oauth"]
|
||||||
|
|
||||||
|
# ====== Worker 运行时配置 ======
|
||||||
|
[workers.config]
|
||||||
|
data_dir = "./data"
|
||||||
|
# 演示模式:验证码随响应返回(无短信通道的本地演示)。生产必须置 false 并接真实短信通道
|
||||||
|
return_otp_in_response = true
|
||||||
|
|
||||||
|
# GitHub OAuth App 凭据(https://github.com/settings/developers 创建)
|
||||||
|
[workers.config.github]
|
||||||
|
client_id = "your-github-oauth-client-id"
|
||||||
|
client_secret = "your-github-oauth-client-secret"
|
||||||
|
redirect_uri = "http://localhost:5173/auth/oauth/github/callback"
|
||||||
|
scope = "read:user user:email"
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
[GET]
|
||||||
|
summary = "GitHub 授权登录:生成授权跳转 URL"
|
||||||
|
docstring = "生成 GitHub OAuth 授权链接(含防 CSRF 的 state,存共享缓存 300s)。前端拿 authorize_url 自行跳转。"
|
||||||
|
auth_required = false
|
||||||
|
cacheable = false
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
[POST]
|
||||||
|
summary = "GitHub 授权回调:换取用户信息并签发平台 token"
|
||||||
|
docstring = "前端收到 GitHub 回跳的 code+state 后调用;校验 state(一次性)、换取用户信息、按绑定关系 find-or-create 账号,签发与内置登录同契约的平台 token。"
|
||||||
|
auth_required = false
|
||||||
|
cacheable = false
|
||||||
|
params = ["code: str", "state: str"]
|
||||||
|
|
||||||
|
[POST.response_model]
|
||||||
|
result = { type = "str", required = true }
|
||||||
|
token = { type = "str", required = true }
|
||||||
|
message = { type = "str", required = true }
|
||||||
|
timestamp = { type = "float", required = false }
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
[POST]
|
||||||
|
summary = "手机验证码登录:校验验证码并签发平台 token"
|
||||||
|
docstring = "校验一次性验证码后,按手机号绑定关系 find-or-create 账号,签发与内置登录同契约的平台 token。"
|
||||||
|
auth_required = false
|
||||||
|
cacheable = false
|
||||||
|
params = ["phone: str", "code: str"]
|
||||||
|
|
||||||
|
[POST.response_model]
|
||||||
|
result = { type = "str", required = true }
|
||||||
|
token = { type = "str", required = true }
|
||||||
|
message = { type = "str", required = true }
|
||||||
|
timestamp = { type = "float", required = false }
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
[POST]
|
||||||
|
summary = "手机验证码登录:下发验证码"
|
||||||
|
docstring = "生成 6 位验证码存共享缓存(300s)。演示模式随响应返回 dev_code,生产接短信通道后返回 dev_code=null。"
|
||||||
|
auth_required = false
|
||||||
|
cacheable = false
|
||||||
|
params = ["phone: str"]
|
||||||
|
|
||||||
|
[POST.response_model]
|
||||||
|
result = { type = "str", required = true }
|
||||||
|
message = { type = "str", required = true }
|
||||||
|
expires_in = { type = "int", required = false, default = 300 }
|
||||||
|
dev_code = { type = "str", required = false }
|
||||||
@@ -7,6 +7,7 @@ summary = "Add two numbers"
|
|||||||
docstring = "Add two numbers via GET query params"
|
docstring = "Add two numbers via GET query params"
|
||||||
params = ["a: float", "b: float"]
|
params = ["a: float", "b: float"]
|
||||||
auth_required = false
|
auth_required = false
|
||||||
|
validate = false
|
||||||
|
|
||||||
[GET.response_model]
|
[GET.response_model]
|
||||||
result = { type = "float", required = true }
|
result = { type = "float", required = true }
|
||||||
|
|||||||
Reference in New Issue
Block a user