参数 | 是否必填 | 说明 |
启用认证 | 是 | 认证开关。关闭状态即为免认证方式,任何客户端都可以访问 API,不进行任何认证。对于内网环境或测试场景,可以选择免认证方式。 生产环境强烈不建议使用免认证方式。 |
认证方式 | 是 | API Key 系统将自动生成 API Key |
| | JWT Header 名称:从指定请求头中提取 JWT,多个用英文逗号分隔。 Cookie 名称:从指定 Cookie 中提取 JWT,多个用英文逗号分隔。 URI 参数:从指定 URI 参数中提取 JWT,多个用英文逗号分隔。 消费者标识:用于匹配消费者的标识。 标准 Claims 校验:exp(过期时间)、nbf(生效时间)。 最大有效期:JWT 允许的最大有效期,单位为秒,0 表示不限制。 Base64 编码:关闭(默认)——插件把数据库里 cngw_jwt_secrets 表存储的 secret 字段原样当作签名密钥,直接用它与 JWT 进行 HMAC 验签;开启——插件认为数据库里存的 secret 是 base64 编码后的字符串,会先对其做一次 base64 解码,得到原始密钥,再用原始密钥去验签。 CORS 预检验证:是否对 CORS 预检请求进行验证。 |
| | OAuth 2.0 Header 名称:从指定请求头中提取 Access Token,多个用英文逗号分隔。 Token 过期时间:Token 过期时间,单位为秒,0 表示不限制。 Scope 白名单:允许的 Scope 白名单,多个用英文逗号分隔。 强制校验 Scope:是否强制校验请求携带的 Token 的 Scope。 |
| | OIDC 客户端 ID(必填):OIDC 客户端 ID。 客户端密钥(必填):OIDC 客户端密钥。 签发者地址(必填):身份提供商签发地址,用于发现 OIDC 配置,如 https://example.com/oidc。 Audience 目标受众:期望的 Audience 目标受众,留空则不校验。 Scopes 授权范围:请求的 Scopes 授权范围,多个用英文逗号分隔。 消费者标识:用于匹配消费者的标识。 Realm 认证域:认证失败时 WWW-Authenticate 响应头中返回的 realm 标识。 超时时间:请求身份提供商的超时时间,单位为秒。 Token Endpoint 令牌端点认证方法:客户端向 Token Endpoint 令牌端点请求时的认证方法。 Introspection Endpoint 令牌内省端点:令牌内省端点地址。 Introspection Endpoint 令牌内省端点认证方法:请求 Introspection Endpoint 令牌内省端点时的认证方法。 |

curl -X POST https://{网关域名}/{base_path}/v1/chat/completions \\-H "Authorization: Bearer {API_Key}" \\-H "Content-Type: application/json" \\-d '{"model": "qwen-plus","messages": [{"role": "user", "content": "你好"}]}'
Bearer {API_Key}。curl -X POST https://{网关域名}/{base_path}/v1/chat/completions \\-H "Authorization: Bearer {JWT_Token}" \\-H "Content-Type: application/json" \\-d '{"model": "qwen-plus","messages": [{"role": "user", "content": "你好"}]}'
Header:{"alg": "HS256","typ": "JWT"}Payload:{"sub": "user123","iss": "your-app","exp": 1735660800}Signature:HMACSHA256(base64UrlEncode(header) + "." + base64UrlEncode(payload),your-secret-key)
# 步骤1:获取Access Tokencurl -X POST https://oauth.example.com/token \\-d "grant_type=client_credentials" \\-d "client_id=client-12345" \\-d "client_secret=secret-xxxxxx"# 响应示例:{"access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...","token_type": "Bearer","expires_in": 3600}# 步骤2:携带Access Token访问网关curl -X POST https://{网关域名}/{base_path}/v1/chat/completions \\-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..." \\-H "Content-Type: application/json" \\-d '{"model": "qwen-plus","messages": [{"role": "user", "content": "你好"}]}'
curl -X POST https://{网关域名}/{base_path}/v1/chat/completions \\-H "X-Client-ID: client-12345" \\-H "X-Client-Secret: secret-xxxxxx" \\-H "Content-Type: application/json" \\-d '{"model": "qwen-plus","messages": [{"role": "user", "content": "你好"}]}'
curl -X POST https://{网关域名}/{base_path}/v1/chat/completions \\-H "Authorization: Bearer {ID_Token}" \\-H "Content-Type: application/json" \\-d '{"model": "qwen-plus","messages": [{"role": "user", "content": "你好"}]}'
curl -X POST https://{网关域名}/{base_path}/v1/chat/completions \\-H "Authorization: Bearer {正确的API_Key}" \\-H "Content-Type: application/json" \\-d '{"model": "qwen-plus","messages": [{"role": "user", "content": "你好"}]}'
curl -X POST https://{网关域名}/{base_path}/v1/chat/completions \\-H "Authorization: Bearer wrong-api-key" \\-H "Content-Type: application/json" \\-d '{"model": "qwen-plus","messages": [{"role": "user", "content": "你好"}]}'
{"error": {"code": "unauthorized","message": "Invalid API Key"}}
import jwtimport time# JWT配置secret = os.getenv('SECRET_KEY') # 消费者密钥中配置的共享密钥algorithm = "HS256" # 消费者密钥中配置的算法# 生成Tokenpayload = {"sub": "user123",#这是啥"iss": "your-app", #这是啥"exp": int(time.time()) + 3600 # 1小时后过期}token = jwt.encode(payload, secret, algorithm=algorithm)print(f"JWT Token: {token}")
curl -X POST https://{网关域名}/{base_path}/v1/chat/completions \\-H "Authorization: Bearer {JWT_Token}" \\-H "Content-Type: application/json" \\-d '{"model": "qwen-plus","messages": [{"role": "user", "content": "你好"}]}'
Bearer {凭证})/dev/api、/prod/api)tenant_id)文档反馈