Skip to content

Commit 4649d6c

Browse files
authored
docs: add inbound auth (#320)
1 parent 5772492 commit 4649d6c

File tree

6 files changed

+99
-10
lines changed

6 files changed

+99
-10
lines changed

docs/content/90.cli/2.commands.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,9 @@ veadk deploy
6363
- `--secret-key`:指定火山引擎的 Secret Key,用于调用 FaaS 平台的 API
6464
- `--name`:指定部署的应用名称,用于在 FaaS 平台上标识该部署
6565
- `--path`:指定项目路径,默认值为当前目录
66+
- `--auth-method`:指定认证方式,取值为 `none`(不认证)、`api-key`(API key 认证)和 `oauth2`(OAuth2 认证),默认值为 `none`
67+
- `--user-pool-name`:指定火山引擎 Identity 用户池的名称,用于 OAuth2 认证
68+
- `--client-name`:指定火山引擎 Identity 客户端的名称,用于 OAuth2 认证
6669

6770
## 本地调试
6871

docs/content/91.auth/2.inbound.md

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
---
2+
titie: 入站认证
3+
description: 通过入站认证访问 Agent
4+
navigation:
5+
icon: i-lucide-lock
6+
---
7+
8+
VeADK 支持 API key 和 OAuth2 方式的入站认证。
9+
10+
## API Key 认证
11+
12+
API key 认证是通过唯一字符串密钥验证请求方身份、授权访问 API 资源的常见认证方式。VeADK 约定将 API key 通过 URL 的 `token` 参数传递。
13+
14+
::warning
15+
API key 仅适用于 A2A/MCP Server 部署模式,不建议在 VeADK Web 部署模式中使用,更推荐采用 OAuth2 认证。
16+
::
17+
18+
### 使用方式
19+
20+
您可以通过脚手架创建 Agent 时指定 API key 认证方式,或者部署已有项目时添加 `--auth-method=api-key` 参数启用该认证。
21+
22+
当用户访问应用时,API 网关将验证用户 `token` URL 参数中携带的 API key。
23+
24+
## OAuth2 单点登录
25+
26+
OAuth2 是一种开放标准的授权框架,通过令牌而非直接暴露账号密码,安全实现第三方应用对资源的有限访问。
27+
28+
OAuth2 单点登录是基于 OAuth2 授权框架实现的身份认证方案,用户一次登录后可免重复验证访问多个关联应用。VeADK Web 支持 OAuth2 单点登录的认证方式。
29+
30+
::warning
31+
使用 OAuth2 单点登录需要版本为 4.0.0 及以上的 API 网关。
32+
::
33+
34+
### 使用方式
35+
36+
您可以通过脚手架创建 Agent 时指定 OAuth2 认证方式,或者部署已有项目时添加 `--auth-method=oauth2` 参数启用该认证,VeADK 将自动为您创建 Identity 用户池和客户端。如果您需要使用已有的用户池或客户端,您可以在部署时添加 `--user-pool-name``--client-name` 参数指定用户池和客户端。
37+
38+
在部署 VeADK Web 应用后,您可以在 Identity 中创建用户。
39+
40+
1. 登录火山引擎控制台,导航到 Agent Identity 服务
41+
2. 在左侧导航树中,选择 身份认证 > 用户池管理,选择用户池
42+
3. 在用户池的用户标签页中,点击 新建用户,填写用户信息并点击 确定
43+
44+
当用户访问 VeADK Web 应用时,API 网关将引导用户至登录页完成登录。您可以在 `Authorization` 请求头中获得用户的 JWT 令牌。
45+
46+
## OAuth2 JWT 认证
47+
48+
OAuth2 JWT 认证是将 OAuth2 授权框架与 JWT 结合,用 JWT 格式承载授权令牌的认证方式。A2A/MCP Server 支持 OAuth2 JWT 的认证方式。
49+
50+
### 使用方式
51+
52+
您可以通过脚手架创建 Agent 时指定 OAuth2 认证方式,或者部署已有项目时添加 `--auth-method=oauth2` 参数启用该认证,VeADK 将自动为您创建 Identity 用户池。如果您需要使用已有的用户池,您可以在部署时添加 `--user-pool-name` 参数指定用户池。
53+
54+
在部署 A2A/MCP Server 应用后,您可以在 Identity 中管理客户端。
55+
56+
1. 登录火山引擎控制台,导航到 Agent Identity 服务
57+
2. 在左侧导航树中,选择 身份认证 > 用户池管理,选择用户池
58+
3. 在客户端的用户标签中,点击 新建客户端,填写 客户端名称,选择 客户端类型 并点击确定
59+
60+
您可以创建 M2M 类型的客户端用于验证。您可以使用以下 curl 命令生成 JWT 令牌。
61+
62+
```bash [Terminal]
63+
REGION="cn-beijing"
64+
USER_POOL_ID="FILL_IN_YOUR_USER_POOL_ID"
65+
CLIENT_ID="FILL_IN_YOUR_CLIENT_ID"
66+
CLIENT_SECRET="FILL_IN_YOUR_SECRET"
67+
68+
curl --location "https://auth.id.${REGION}.volces.com/userpool/${USER_POOL_ID}/oauth/token" \
69+
--header "Content-Type: application/x-www-form-urlencoded" \
70+
--header "Authorization: Basic $(echo -n "${CLIENT_ID}:${CLIENT_SECRET}" | base64)" \
71+
--data-urlencode "grant_type=client_credentials"
72+
```
73+
74+
当用户访问 A2A/MCP Server 应用时,API 网关将验证用户携带的 JWT 令牌。您可以在 `Authorization` 请求头中获得用户的 JWT 令牌。
File renamed without changes.
File renamed without changes.
File renamed without changes.

veadk/cli/cli_init.py

Lines changed: 22 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -63,16 +63,28 @@ def _render_prompts() -> dict[str, Any]:
6363
)
6464
use_adk_web = deploy_mode == "2"
6565

66-
auth_method_options = {
67-
"1": "None",
68-
"2": "API key",
69-
"3": "OAuth2",
70-
}
71-
auth_methods = {
72-
"1": "none",
73-
"2": "api-key",
74-
"3": "oauth2",
75-
}
66+
auth_method_options = {}
67+
auth_methods = {}
68+
if use_adk_web:
69+
auth_method_options = {
70+
"1": "None",
71+
"2": "OAuth2",
72+
}
73+
auth_methods = {
74+
"1": "none",
75+
"2": "oauth2",
76+
}
77+
else:
78+
auth_method_options = {
79+
"1": "None",
80+
"2": "API key",
81+
"3": "OAuth2",
82+
}
83+
auth_methods = {
84+
"1": "none",
85+
"2": "api-key",
86+
"3": "oauth2",
87+
}
7688

7789
click.echo("Choose an authentication method:")
7890
for key, value in auth_method_options.items():

0 commit comments

Comments
 (0)