跳到主要内容
版本:3.10.x

配置开发者门户

部署开发者门户后,在 Provider Portal 中配置门户设置,以控制访问、身份认证和开发者管理。

门户设置​

门户设置在 Provider Portal 中每个门户的 Settings 页面下进行管理,并分为以下部分。

公共访问​

Public Access 开关控制未经过身份认证的用户能否访问开发者门户:

  • Enabled:未经过身份认证的访问者可以浏览 API Hub 并查看公开 API 产品。
  • Disabled:所有访问者必须先完成身份认证,才能访问门户内容。

门户 Token​

门户 Token 用于开发者门户应用程序向门户 API 进行身份认证。每个 Token 都以 a7prt 为前缀,并且可以配置过期日期。

操作描述
Generate创建一个带有名称和可选过期日期的新 Token。Token 值仅在创建时显示。
Rename更新 Token 的显示名称。
Regenerate生成新 Token 值并使原 Token 值失效。使用新 Token 更新开发者门户的 config.yaml,然后重启应用程序。
Delete删除 Token。如果开发者门户正在使用该 Token,它将失去与门户 API 的连接。
警告

重新生成或删除 Token 后,请更新开发者门户主机上的 config.yaml 并重启应用程序。没有有效 Token 时,门户将无法正常运行。

内置身份认证​

内置身份认证选项控制开发者门户上的电子邮件和密码注册与登录。

设置描述
Enable self-registration启用后,开发者可以直接在开发者门户注册。禁用后,只能通过邀请或外部身份提供商添加开发者。
Registration auto-approval启用后,新开发者账户会立即激活。禁用后,管理员必须在 Provider Portal 中审批每个注册请求。
Login with email启用后,开发者可以使用电子邮件地址登录。

可以完全启用或禁用内置身份认证选项。禁用它会从开发者门户中删除电子邮件/密码登录选项。至少一个登录选项(内置或 SSO)必须保持启用状态。

SSO(外部登录选项)​

外部身份提供商原本用于为开发者门户提供额外的登录选项,但已发布的控制台与控制面目前为该配置暴露了相互冲突的 API 契约。尝试配置外部身份提供商前,请先参阅开发者门户 SSO 状态。

SCIM 预配​

SCIM(跨域身份管理系统)可以将外部身份提供商中的身份同步到自定义开发者门户。已发布的前端未注册 SCIM 插件,因此更改 Provider Portal 设置不会启用该端点。

如需基于公开 Boilerplate 自定义实现,请参阅使用 Okta 为自定义开发者门户配置 SCIM 预配。该流程会添加服务端插件、声明预配凭据并更新数据库 schema。组织成员关系和应用访问权限需要另行与门户授权模型集成。

应用程序配置​

以下设置是在开发者门户的 config.yaml 文件中配置的,需要重启才能生效。

门户 API 连接​

config.yaml
portal:
url: https://<CONTROL_PLANE_HOST>:4321 # 门户 API 端点
token: a7prt-xxxxxxxxxxxx # 从 Provider Portal 获取的门户 Token

数据库​

config.yaml
db:
url: "postgres://user:password@host:5432/dbname"

开发者门户使用 PostgreSQL 兼容的数据库来存储用户会话、身份认证数据和组织信息。

身份认证密钥​

config.yaml
auth:
secret: "<base64-encoded-secret>"

此密钥用于签署身份认证会话。使用以下命令生成密钥:

openssl rand -base64 32

应用程序 URL​

config.yaml
app:
name: "My Developer Portal" # 显示在浏览器标题和页眉中
desc: "API documentation portal" # 用作 SEO 元描述
baseURL: "https://portal.example.com"
trustedOrigins:
- "https://portal.example.com"

环境变量替换​

配置值支持环境变量替换:

语法行为
${VAR}必填。如果未设置变量,配置将失败。
${VAR:default}可选。如果未设置变量,则使用默认值。

示例:

config.yaml
portal:
url: ${PORTAL_API_URL}
token: ${PORTAL_TOKEN}
auth:
secret: ${AUTH_SECRET}

其他资源​