登录配置
getLoginConfig
1. 接口描述
接口功能:查询登录策略配置
接口声明:app.env.getLoginConfig(): Promise<Object>
自 v5.1.0 起支持此接口
查询指定云开发环境的登录策 略配置,包括手机号短信登录、邮箱登录、用户名密码登录和匿名登录方式的开启状态,同时包含短信验证码发送通道、MFA 多因子认证和密码更新策略。
2. 输入参数
无
3. 返回结果
| 字段 | 必填 | 类型 | 说明 |
|---|---|---|---|
| RequestId | 是 | String | 请求唯一标识 |
| EmailLogin | 是 | Boolean | 是否开启邮箱登录方式 |
| AnonymousLogin | 是 | Boolean | 是否开启匿名登录方式 |
| UserNameLogin | 是 | Boolean | 是否开启用户名密码登录方式 |
| PhoneNumberLogin | 是 | Boolean | 是否开启手机号短信登录方式 |
| SmsVerificationConfig | 是 | SmsVerificationConfig | 短信验证码发送配置,见下方说明 |
| MfaConfig | 否 | MfaConfig | MFA 多因子认证登录配置 |
| PwdUpdateStrategy | 否 | PwdUpdateStrategy | 密码修改策略配置 |
SmsVerificationConfig
| 字段 | 必 填 | 类型 | 说明 |
|---|---|---|---|
| Type | 否 | String | 短信发送通道类型,如 default |
| Name | 否 | String | 自定义 APIs 数据源名称 |
| Method | 否 | String | 调用方法 |
| SmsDayLimit | 否 | Number | 每日发送限额,-1 表示不限制 |
MfaConfig
| 字段 | 必填 | 类型 | 说明 |
|---|---|---|---|
| On | 否 | String | MFA 因子认证,TRUE 或 FALSE |
| Sms | 否 | String | 短信验证,TRUE 或 FALSE |
| 否 | String | 邮箱验证,TRUE 或 FALSE | |
| RequiredBindPhone | 否 | String | 强制绑定手机号,TRUE 或 FALSE |
PwdUpdateStrategy
| 字段 | 必填 | 类型 | 说明 |
|---|---|---|---|
| FirstLoginUpdate | 否 | Boolean | 首次登录是否强制修改密码 |
| PeriodUpdate | 否 | Boolean | 是否开启定期强制修改密码 |
| PeriodValue | 否 | Number | 定期修改密码的周期值 |
| PeriodType | 否 | String | 周期时间单位,如 YEAR、MONTH、WEEK |
4. 示例代码
const CloudBase = require('@cloudbase/manager-node')
const app = new CloudBase({ secretId: 'Your SecretId', secretKey: 'Your SecretKey', envId: 'your-env-id' })
async function test() {
const res = await app.env.getLoginConfig()
console.log('邮箱登录:', res.EmailLogin)
console.log('匿名登录:', res.AnonymousLogin)
console.log('用户名密码登录:', res.UserNameLogin)
console.log('手机号短信登录:', res.PhoneNumberLogin)
}
test()
modifyLoginConfig
1. 接口描述
接口功能:修改登录策略配置
接口声明:app.env.modifyLoginConfig(params): Promise<Object>
自 v5.1.0 起支持此接口
修改指定云开发环境的登录策略配置。支持开启或关闭手机号短信登录、邮箱登录、用户名密码登录和匿名登录,同时可配置短信验证码发送通道、MFA 多因子认证和密码更新策略。修改后立即生效,影响该环境下所有终端用户的登录行为。
2. 输入参数
| 字段 | 必填 | 类型 | 说明 |
|---|---|---|---|
| PhoneNumberLogin | 是 | Boolean | 手机号短信登录开关 |
| EmailLogin | 是 | Boolean | 邮箱登录开关 |
| UserNameLogin | 是 | Boolean | 用户名密码登录开关 |
| AnonymousLogin | 是 | Boolean | 匿名登录开关 |
| SmsVerificationConfig | 否 | Object | 短信验证码发送配置,不传则不修改当前配置,结构见 SmsVerificationConfig |
| MfaConfig | 否 | Object | MFA 多因子认证登录配置,不传则不修改当前配置,结构见 MfaConfig |
| PwdUpdateStrategy | 否 | Object | 密码更新策略配置,不传则不修改当前配置,结构见 PwdUpdateStrategy |
3. 返回结果
| 字段 | 类型 | 说明 |
|---|---|---|
| RequestId | String | 请求唯一标识 |
4. 示例代码
const CloudBase = require('@cloudbase/manager-node')
const app = new CloudBase({ secretId: 'Your SecretId', secretKey: 'Your SecretKey', envId: 'your-env-id' })
async function test() {
// 先查询当前配置
const config = await app.env.getLoginConfig()
// 开启匿名登录
const res = await app.env.modifyLoginConfig({
PhoneNumberLogin: config.PhoneNumberLogin,
EmailLogin: config.EmailLogin,
UserNameLogin: config.UserNameLogin,
AnonymousLogin: true
})
console.log(res.RequestId)
}
test()
describeClient
1. 接口描述
接口功能:查询应用客户端详情
接口声明:app.env.describeClient(id): Promise<Object>
自 v5.1.0 起支持此接口
获取指定云开发环境下某个客户端的配置信息,包括 OAuth 凭证、Token 有效期、会话控制策略等。当客户端 ID 等于环境 ID 时,返回该环境的默认客户端配置。
2. 输入参数
| 字段 | 必填 | 类型 | 说明 |
|---|---|---|---|
| Id | 是 | String | 客户端唯一标识符(Client ID),一般使用环境 ID |
3. 返回结果
| 字段 | 必填 | 类型 | 说明 |
|---|---|---|---|
| RequestId | 是 | String | 请求唯一标识 |
| Id | 是 | String | 客户端的唯一标识符(Client ID) |
| CreatedAt | 否 | String | 客户端的创建时间,ISO 8601 格式 |
| UpdatedAt | 否 | String | 客户端信息的最后修改时间,ISO 8601 格式 |
| RefreshTokenExpiresIn | 否 | Number | Refresh Token 的有效期,单位为秒 |
| AccessTokenExpiresIn | 否 | Number | Access Token 的有效期,单位为秒 |
| MaxDevice | 否 | Number | 单个用户允许同时登录的最大会话数量,-1 表示不限制 |
4. 示例代码
const CloudBase = require('@cloudbase/manager-node')
const app = new CloudBase({ secretId: 'Your SecretId', secretKey: 'Your SecretKey', envId: 'your-env-id' })
async function test() {
const res = await app.env.describeClient('your-env-id')
console.log('Client ID:', res.Id)
console.log('Refresh Token 有效期:', res.RefreshTokenExpiresIn, '秒')
console.log('Access Token 有效期:', res.AccessTokenExpiresIn, '秒')
console.log('最大会话数:', res.MaxDevice)
}
test()
modifyClient
1. 接口描述
接口功能:修改应用客户端配置
接口声明:app.env.modifyClient(params): Promise<Object>
自 v5.1.0 起支持此接口
采用增量更新策略,仅更新请求中传入的非空字段,未传入的字段保持原值不变。支持修改 Token 有效期、会话控制策略等配置。当客户端 ID 等于环境 ID 且客户端尚未创建时,将自动创建默认客户端配置。
2. 输入参数
| 字段 | 必填 | 类型 | 说明 |
|---|---|---|---|
| Id | 是 | String | 客户端唯一标 识符(Client ID) |
| RefreshTokenExpiresIn | 否 | Number | Refresh Token 的有效期,单位为秒,取值范围 1800~2592000,默认 2592000 |
| AccessTokenExpiresIn | 否 | Number | Access Token 的有效期,单位为秒,最小 1800,默认 7200,应小于 RefreshTokenExpiresIn |
| MaxDevice | 否 | Number | 单个用户允许同时登录的最大会话数量,-1 不限制,0 按 User-Agent 区分,1~50 为精确限制 |
3. 返回结果
| 字段 | 类型 | 说明 |
|---|---|---|
| RequestId | String | 请求唯一标识 |
4. 示例代码
const CloudBase = require('@cloudbase/manager-node')
const app = new CloudBase({ secretId: 'Your SecretId', secretKey: 'Your SecretKey', envId: 'your-env-id' })
async function test() {
const res = await app.env.modifyClient({
Id: 'your-env-id',
RefreshTokenExpiresIn: 2592000,
AccessTokenExpiresIn: 7200,
MaxDevice: 5
})
console.log(res.RequestId)
}
test()
getProviders
1. 接口描述
接口功能:获取三方认证源列表
接口声明:app.env.getProviders(): Promise<Object>
自 v5.1.0 起支持此接口
查询指定云开发环境下的身份认证源列表,包括第三方登录(OAuth、OIDC、SAML)、微信小程序登录、自定义登录和邮箱登录等。若自定义登录或邮箱登录的身份源尚未创建,接口会自动追加一个默认关闭状态的记录。
2. 输入参数
无
3. 返回结果
| 字段 | 必填 | 类型 | 说明 |
|---|---|---|---|
| RequestId | 是 | String | 请求唯一标识 |
| Total | 否 | Number | 认证源总数 |
| Data | 否 | Array<Provider> | 三方认证源列表 |
Provider
| 字段 | 必填 | 类型 | 说明 |
|---|---|---|---|
| Id | 是 | String | 身份源唯一标识,2~32 位小写字母和数字 |
| Config | 是 | Object | 身份源安全认证配置,见 ProviderConfig |
| Name | 否 | LocalizedMessage | 身份源名称,支持国际化多语言配置 |
| Picture | 否 | String | 身份源图标 URL |
| Homepage | 否 | String | 身份源官方主页地址 |
| ProviderType | 否 | String | 身份源协议类型:OAUTH、OIDC、SAML、CUSTOM、EMAIL 等 |
| On | 否 | String | 身份源启用状态,TRUE 或 FALSE |
| AutoSignUpWithProviderUser | 否 | String | 是否自动注册系统用户,TRUE、FALSE、UNSPECIFIED |
| TransparentMode | 否 | String | 是否开启信息透传模式,TRUE 或 FALSE |
| ReuseUserId | 否 | String | 是否复用第三方用户 ID,TRUE 或 FALSE |
| EmailConfig | 否 | EmailConfig | 邮箱身份源专项配置,仅 ProviderType 为 EMAIL 时有效 |
| Description | 否 | LocalizedMessage | 身份源描述,支持国际化多语言配置 |
| AutoSignInWhenEmailMatch | 否 | String | 是否开启邮箱自动关联登录,TRUE、FALSE、UNSPECIFIED |
| AutoSignInWhenPhoneNumberMatch | 否 | String | 是否开启手机号码自动关联登录,TRUE、FALSE、UNSPECIFIED |
ProviderConfig
| 字段 | 类型 | 必选 | 说明 |
|---|---|---|---|
| Issuer | String | OIDC 时建议填写 | 身份提供方的唯一标识符(Issuer URL),用于验证 ID Token 中的 iss 字段。仅当 ProviderType 为 OIDC 时需要填写,值通常为第三方 OIDC 服务的根地址,如 https://accounts.google.com。填写后平台将自动通过 /.well-known/openid-configuration 发现并填充 AuthorizationEndpoint、TokenEndpoint、UserinfoEndpoint、JwksUri 等端点地址 |
| JwksUri | String | OIDC 时需要 | JSON Web Key Set 地址,用于获取公钥以验证 ID Token 签名。仅当 ProviderType 为 OIDC 时需要填写。若已填写 Issuer,该字段将通过 Discovery 自动获取,无需手动填写 |
| ClientId | String | OIDC/OAUTH 时必填 | 在第三方身份提供方注册的应用客户端 ID。当 ProviderType 为 OIDC 或 OAUTH 时必须填写,可在对应平台的开发者控制台中获取 |
| ClientSecret | String | OIDC/OAUTH 时必填 | 在第三方身份提供方注册的应用客户端密钥,与 ClientId 配合使用,用于在 Token 端点进行身份验证。当 ProviderType 为 OIDC 或 OAUTH 时必须填写,请妥善保管,避免泄露 |
| RedirectUri | String | OIDC/OAUTH 时必填 | OAuth 授权完成后第三方平台回调的地址,需与在第三方平台注册的回调地址完全一致。当 ProviderType 为 OIDC 或 OAUTH 时必须填写。示例:https://envId.ap-shanghai.tcb-api.tencentcloudapi.com/auth/v1/callback |
| Scope | String | OIDC/OAUTH 时必填 | 向第三方申请的权限范围,多个 scope 空格分隔。当 ProviderType 为 OIDC 或 OAUTH 时必须填写,OIDC 场景下通常至少包含 openid,如需获取邮箱或手机号可追加 email、phone 等。若已填写 Issuer 且未指定 Scope,将自动使用 Discovery 返回的 scopes_supported。示例:openid email name |
| AuthorizationEndpoint | String | OIDC/OAUTH 时必填 | 授权端点地址,用于引导用户跳转至第三方登录页面。当 ProviderType 为 OIDC 或 OAUTH 时必须填写。若已填写 Issuer,该字段将通过 Discovery 自动获取 |
| TokenEndpoint | String | OIDC/OAUTH 时必填 | Token 端点地址,用于通过授权码(code)换取 Access Token 和 ID Token。当 ProviderType 为 OIDC 或 OAUTH 时必须填写。若已填写 Issuer,该字段将通过 Discovery 自动获取 |
| UserinfoEndpoint | String | OIDC/OAUTH 时按需 | 用户信息端点地址,用于通过 Access Token 获取用户基本信息(昵称、头像、邮箱等)。当 ProviderType 为 OIDC 或 OAUTH 且需要获取用户详细信息时填写。若已填写 Issuer,该字段将通过 Discovery 自动获取 |
| ResponseType | String | 否 | 授权请求的响应类型。可选值:code(授权码模式,推荐)、token(隐式模式)、id_token(直接返回 ID Token)。ProviderType 为 OIDC 时默认 id_token,其他类型默认 code |
| SignoutEndpoint | String | 否 | 单点退出端点地址。配置后,用户退出时将跳转至该地址使第三方 IDP 登录态失效。不填则退出时仅清除本平台登录态 |
| TokenEndpointAuthMethod | String | 否 | Token 端点的客户端身份验证方式。可选值:CLIENT_SECRET_POST(凭证放在请求 Body 中)、CLIENT_SECRET_BASIC(凭证通过 HTTP Basic Auth Header 传递),默认 CLIENT_SECRET_POST |
| SamlMetadata | String | SAML 时必填 | SAML 身份提供方的 Metadata XML 内容,包含实体 ID、SSO 端点地址、签名证书等,最大 10KB。仅当 ProviderType 为 SAML 时填写,通常可从第三方 IDP 管理控制台下载 |
| RequestParametersMap | RequestParametersMap | 否 | 请求参数映射配置,用于处理非标准 OAuth 协议的参数转换。默认严格遵循 OAuth 2.0 标准,对接微信、企业微信等非标准平台时需配置 |
| ResponseParametersMap | ResponseParametersMap | 否 | 响应参数映射配置,用于处理非标准 OAuth 协议的响应参数转换。对接微信等非标准平台时,可将第三方返回的字段映射为平台标准字段 |
- OIDC 类型:建议填写
Issuer(自动发现端点),或手动填写ClientId、ClientSecret、RedirectUri、Scope、AuthorizationEndpoint、TokenEndpoint、JwksUri - OAUTH 类型:必填
ClientId、ClientSecret、RedirectUri、Scope、AuthorizationEndpoint、TokenEndpoint - SAML 类型:必填
SamlMetadata - 其他类型(CUSTOM、EMAIL 等):所有字段均为可选
RequestParametersMap
请求参数映射,用于非标准 OAuth 协议的参数转换。默认可为空,对接国内平台(如微信、企业微信)时需配置。
| 字段 | 必填 | 类型 | 说明 |
|---|---|---|---|
| ClientId | 否 | String | OAuth 标准 client_id 的映射字段名,如微信对应 appid |
| ClientSecret | 否 | String | OAuth 标准 client_secret 的映射字段名 |
| RedirectUri | 否 | String | OAuth 标准 redirect_uri 的映射字段名 |
| GrantType | 否 | String | OAuth 授权模式匹配的参数字段名 |
| ClientCredentials | 否 | String | OAuth 授权模式类型,如 authorization_code、client_credentials |
| AccessToken | 否 | String | OAuth 返回中 access_token 的映射字段名 |
| ExpiresIn | 否 | String | OAuth 返回中 Token 有效期的映射字段名 |
| AuthPosition | 否 | String | OAuth 获取 Token 时认证信息的请求位置:URL、Headers、Body |
| RegisterUserRoleId | 否 | String | 身份源注册用户时自动绑定的角色 ID |
| RegisterUserAutoLicense | 否 | String | 注册用户时是否自动授予许可证,TRUE 或 FALSE,默认 FALSE |
| RegisterUserType | 否 | String | 注册用户时的用户类型:externalUser(外部用户)或 internalUser(内部用户),默认 externalUser |
ResponseParametersMap
响应参数映射,用于非标准 OAuth 协议的响应参数转换。默认可为空,对接国内平台(如微信、企业微信)时需配置。
| 字段 | 必填 | 类型 | 说明 |
|---|---|---|---|
| Sub | 否 | String | 用户唯一标识(sub)的映射字段名,对应 OIDC 标准 sub |
| Name | 否 | String | 用户名称的映射字段名,对应 OIDC 标准 name |
| Picture | 否 | String | 用户头像的映射字段名,需公网可访问 URL |
| Username | 否 | String | 用户登录名的映射字段名,对应 OIDC 标准 preferred_username |
| 否 | String | 用户邮箱的映射字段名,对应 OIDC 标准 email | |
| PhoneNumber | 否 | String | 用户手机号的映射字段名,对应 OIDC 标准 phone_number |
| Groups | 否 | String | 用户角色/分组的映射字段名,对应 OIDC 标准 groups,支持字符串数组 |
LocalizedMessage
国际化多语言文本结构,用于身份认证源的 Name 和 Description 等字段。可以为每种语言配置不同的展示文本。
| 字段 | 必填 | 类型 | 说明 |
|---|---|---|---|
| Message | 是 | String | 默认展示的文本 |
| Localized | 否 | Array<MessageLocalized> | 针对每种语言的展示文字列表 |
MessageLocalized
| 字段 | 必填 | 类型 | 说明 |
|---|---|---|---|
| Message | 是 | String | 该语言的展示文本 |
| Locale | 是 | String | 语言标识 |
示例:
{
Message: '微信登录',
Localized: [
{ Message: 'WeChat Login', Locale: 'en' },
{ Message: '위챗 로그인', Locale: 'ko' }
]
}
4. 示例代码
const CloudBase = require('@cloudbase/manager-node')
const app = new CloudBase({ secretId: 'Your SecretId', secretKey: 'Your SecretKey', envId: 'your-env-id' })
async function test() {
const res = await app.env.getProviders()
console.log('认证源总数:', res.Total)
res.Data?.forEach(provider => {
console.log(`${provider.Id} (${provider.ProviderType}): ${provider.On}`)
})
}
test()
addProvider
1. 接口描述
接口功能:添加身份认证源
接口声明:app.env.addProvider(params): Promise<Object>
自 v5.1.0 起支持此接口
在指定云开发环境下创建新的身份认证源,支持 OAuth 2.0、OIDC、SAML 2.0 等标准协议,以及自定义登录和邮箱登录等多种认证方式。若身份源 ID 已存在将返回错误。每个环境最多允许添加 20 个认证源。
2. 输入参数
| 字段 | 必填 | 类型 | 说明 |
|---|---|---|---|
| Name | 是 | LocalizedMessage | 身份源显示名称,支持国际化多语言配置 |
| ProviderType | 是 | String | 身份源协议类型:OAUTH、OIDC、SAML、WX_MICRO_APP、WX_QRCODE_MICRO_APP、WX_CLOUDBASE_MICRO_APP、WX_MP、WX_OPEN、WX_WORK_INTERNAL、WX_WORK_AGENT、WX_WORK_THIRD_PARTY、WX_WORK_THIRD_PARTY_ASSOCIATION、CUSTOM、EMAIL |
| Id | 否 | String | 身份源唯一标识符,2~32 位小写字母和数字,不填则系统自动生成 |
| Picture | 否 | String | 身份源图标 URL,建议 64×64 SVG 格式 |
| Homepage | 否 | String | 身份源官方主页地址 |
| Config | 否 | Object | 身份认证源协议连接配置,结构见 ProviderConfig |
| TransparentMode | 否 | String | 是否开启透传模式,TRUE、FALSE、UNSPECIFIED,默认 FALSE |
| On | 否 | String | 身份源启用状态,TRUE、FALSE、UNSPECIFIED,默认 TRUE |
| Description | 否 | LocalizedMessage | 身份源描述,支持国际化多语言配置 |
| ReuseUserId | 否 | String | 是否复用第三方用户 ID 作为平台用户 ID,TRUE、FALSE、UNSPECIFIED |
| AutoSignInWhenEmailMatch | 否 | String | 是否开启邮箱自动关联登录,默认 FALSE |
| AutoSignInWhenPhoneNumberMatch | 否 | String | 是否开启手机号自动关联登录,默认 TRUE |
3. 返回结果
| 字段 | 类型 | 说明 |
|---|---|---|
| RequestId | String | 请求唯一标识 |
4. 示例代码
const CloudBase = require('@cloudbase/manager-node')
const app = new CloudBase({ secretId: 'Your SecretId', secretKey: 'Your SecretKey', envId: 'your-env-id' })
async function test() {
// 添加一个 OAuth 身份认证源
const res = await app.env.addProvider({
Name: { Message: 'My OAUTH Provider' },
ProviderType: 'OAUTH',
Id: 'myoauth',
Config: {
ClientId: 'your-client-id',
ClientSecret: 'your-client-secret',
AuthorizationEndpoint: 'https://www.example.com/auth',
TokenEndpoint: 'https://www.example.com/token',
UserinfoEndpoint: 'https://www.example.com/userinfo',
Scope: 'openid profile',
ResponseType: 'code',
TokenEndpointAuthMethod: 'CLIENT_SECRET_POST'
},
On: 'TRUE'
})
console.log(res.RequestId)
}
test()