通过 Account API 进行账户设置
什么是 Logto Account API
Logto Account API 是一组全面的 API,允许终端用户直接访问 API,而无需通过 Management API。以下是其亮点:
- 直接访问:Account API 使终端用户能够直接访问和管理自己的账户资料,而无需中转 Management API。
- 用户资料和身份管理:用户可以完全管理他们的资料和安全设置,包括更新身份信息(如电子邮件、电话和密码)以及管理社交连接。MFA 和 SSO 支持即将推出。
- 全局访问控制:管理员拥有完整的全局控制权,可以自定义每个字段。
- 无缝授权 (Authorization):授权 (Authorization) 比以往更简单!只需使用
client.getAccessToken()获取 OP (Logto) 的不透明访问令牌,并将其作为Bearer <access_token>附加到 Authorization 头中。
通过 Logto Account API,你可以构建一个自定义的账户管理系统,如与 Logto 完全集成的个人资料页面。
以下是一些常见的使用场景:
- 检索用户资料
- 更新用户资料
- 更新用户密码
- 更新用户身份信息,包括电子邮件、电话和社交连接
- 管理 MFA 因素(验证)
- 管理用户会话
- 管理用户授权的应用程序(授权)
要了解更多可用的 API,请访问 Logto Account API 参考 和 Logto Verification API 参考。
SSO 账户查看和账户删除功能目前通过 Logto Management API 提供。有关实现细节,请参阅 通过 Management API 进行账户设置。
如何启用 Account API
导航到 控制台 > 登录和账户 > 账户中心。
Account API 默认关闭,因此其访问控制被锁定。切换 启用 Account API 以打开它。
启用后,为标识符、资料数据和第三方令牌访问配置每个字段的权限。每个字段支持 Off、ReadOnly 或 Edit;默认是 Off。
- 安全字段:
- 字段包括:主电子邮件、主电话、社交身份、密码和 MFA。
- 在终端用户编辑这些字段之前,他们必须通过密码、电子邮件或短信验证身份,以获得 10 分钟的验证记录 ID。请参阅 获取验证记录 ID。
- 要使用 WebAuthn 密钥进行 MFA,请将你的前端应用程序域添加到 WebAuthn 相关来源,以便账户中心和登录体验可以共享密钥。请参阅 链接新的 WebAuthn 密钥。
- 资料字段:
- 秘密保险库:
- 对于 OIDC 或 OAuth 社交和企业连接器,Logto 秘密保险库 在认证后安全地存储第三方访问和刷新令牌。应用程序可以调用外部 API,例如同步 Google 日历事件,而无需再次提示用户登录。一旦启用 Account API,令牌检索将自动可用。
- 会话管理:
- 启用后,用户可以查看和管理他们的活动会话,包括设备信息和上次登录时间。用户还可以撤销会话以从特定设备注销。
- 同一
Sessions字段权限也控制用户授权的应用程序(授权)API(查看和撤销授权)。 - 在终端用户访问会话管理之前,他们必须通过密码、电子邮件或短信验证身份,以获得 10 分钟的验证记录 ID。请参阅 获取验证记录 ID。
如何访问 Account API
为了确保访问令牌具有适当的权限,请确保在 Logto 配置中正确配置了相应的权限 (Scopes)。
例如,对于 POST /api/my-account/primary-email API,你需要配置 email 权限;对于 POST /api/my-account/primary-phone API,你需要配置 phone 权限。
import { type LogtoConfig, UserScope } from '@logto/js';
const config: LogtoConfig = {
// ...其他选项
// 添加适合你的用例的适当权限。
scopes: [
UserScope.Email, // 用于 `{POST,DELETE} /api/my-account/primary-email` API
UserScope.Phone, // 用于 `{POST,DELETE} /api/my-account/primary-phone` API
UserScope.CustomData, // 用于管理自定义数据
UserScope.Address, // 用于管理地址
UserScope.Identities, // 用于身份和 MFA 相关 API
UserScope.Profile, // 用于管理用户资料
UserScope.Sessions, // 用于管理用户会话和应用程序授权
],
};
获取访问令牌
在你的应用程序中设置 SDK 后,你可以使用 client.getAccessToken() 方法获取访问令牌。此令牌是不透明令牌,可用于访问 Account API。
如果你没有使用官方 SDK,你应该在访问令牌授予请求到 /oidc/token 时将 resource 设置为空。
使用访问令牌访问 Account API
在与 Account API 交互时,你应该在 HTTP 头的 Authorization 字段中以 Bearer 格式(Bearer YOUR_TOKEN)包含访问令牌。
以下是获取用户账户信息的示例:
curl https://[tenant-id].logto.app/api/my-account \
-H 'authorization: Bearer <access_token>'
管理基本账户信息
检索用户账户信息
要获取用户数据,你可以使用 GET /api/my-account 端点。
curl https://[tenant-id].logto.app/api/my-account \
-H 'authorization: Bearer <access_token>'
响应体如下:
{
"id": "...",
"username": "...",
"name": "...",
"avatar": "..."
}
响应字段可能会根据账户中心设置而有所不同。
更新基本账户信息
基本账户信息包括用户名、姓名、头像、自定义数据和其他资料信息。
要更新 用户名、姓名、头像和自定义数据,你可以使用 PATCH /api/my-account 端点。
curl -X PATCH https://[tenant-id].logto.app/api/my-account \
-H 'authorization: Bearer <access_token>' \
-H 'content-type: application/json' \
--data-raw '{"username":"...","name":"...","avatar":"..."}'
要更新其他资料信息,包括 familyName、givenName、middleName、nickname、profile(个人资料页面 URL)、website、gender、birthdate、zoneinfo、locale 和 address,你可以使用 PATCH /api/my-account/profile 端点。
curl -X PATCH https://[tenant-id].logto.app/api/my-account/profile \
-H 'authorization: Bearer <access_token>' \
-H 'content-type: application/json' \
--data-raw '{"familyName":"...","givenName":"..."}'
管理标识符和其他敏感信息
出于安全原因,Account API 需要对涉及标识符和其他敏感信息的操作进行额外的授权 (Authorization) 层。
获取验证记录 ID
首先,你需要获取一个具有 10 分钟过期时间(TTL)的 验证记录 ID。这可以用于在更新敏感信息之前验证用户的身份。这意味着一旦用户通过密码、电子邮件验证码或短信验证码成功验证其身份,他们就有 10 分钟的时间来更新与认证 (Authentication) 相关的数据,包括标识符、凭据、社交账户链接和 MFA。
要获取验证记录 ID,你可以 验证用户的密码 或 向用户的电子邮件或电话发送验证码。
验证用户的密码
curl -X POST https://[tenant-id].logto.app/api/verifications/password \
-H 'authorization: Bearer <access_token>' \
-H 'content-type: application/json' \
--data-raw '{"password":"..."}'
响应体如下:
{
"verificationRecordId": "...",
"expiresAt": "..."
}
通过向用户的电子邮件或电话发送验证码进行验证
以电子邮件为例,请求一个新的验证码并获取验证记录 ID:
curl -X POST https://[tenant-id].logto.app/api/verifications/verification-code \
-H 'authorization: Bearer <access_token>' \
-H 'content-type: application/json' \
--data-raw '{"identifier":{"type":"email","value":"..."}}'
响应体如下:
{
"verificationRecordId": "...",
"expiresAt": "..."
}
收到验证码后,你可以使用它来更新验证记录的验证状态。
curl -X POST https://[tenant-id].logto.app/api/verifications/verification-code/verify \
-H 'authorization: Bearer <access_token>' \
-H 'content-type: application/json' \
--data-raw '{"identifier":{"type":"email","value":"..."},"verificationId":"...","code":"123456"}'
在验证代码后,你现在可以使用验证记录 ID 来更新用户的标识符。
要了解更多关于验证的信息,请参阅 通过 Account API 进行安全验证。
发送带有验证记录 ID 的请求
在发送请求以更新用户的标识符时,你需要在请求头中包含验证记录 ID,并使用 logto-verification-id 字段。
更新用户密码
要更新用户密码,你可以使用 POST /api/my-account/password 端点。
curl -X POST https://[tenant-id].logto.app/api/my-account/password \
-H 'authorization: Bearer <access_token>' \
-H 'logto-verification-id: <verification_record_id>' \
-H 'content-type: application/json' \
--data-raw '{"password":"..."}'
与注册时创建的密码一样,通过 Account API 设置的密码必须符合你在 控制台 > 安全 > 密码策略 中配置的 密码策略。如果密码不符合策略,Logto 将返回详细的验证结果和错误消息。
更新或链接新的电子邮件
要使用此方法,你需要 配置电子邮件连接器,并确保配置了 BindNewIdentifier 模板。
要更新或链接新的电子邮件,你首先需要证明对该电子邮件的所有权。
调用 POST /api/verifications/verification-code 端点请求验证码。
curl -X POST https://[tenant-id].logto.app/api/verifications/verification-code \
-H 'authorization: Bearer <access_token>' \
-H 'content-type: application/json' \
--data-raw '{"identifier":{"type":"email","value":"..."}}'
你将在响应中找到一个 verificationId,并在电子邮件中收到验证码,使用它来验证电子邮件。
curl -X POST https://[tenant-id].logto.app/api/verifications/verification-code/verify \
-H 'authorization: Bearer <access_token>' \
-H 'content-type: application/json' \
--data-raw '{"identifier":{"type":"email","value":"..."},"verificationId":"...","code":"..."}'
在验证代码后,你现在可以调用 PATCH /api/my-account/primary-email 来更新用户的电子邮件,将 verificationId 设置为请求体中的 newIdentifierVerificationRecordId。
此请求需要两个单独的验证记录 ID:
logto-verification-id(头部):在进行敏感更改之前证明用户的身份。通过 验证用户的密码 或 向用户的现有电子邮件或电话发送验证码 获取。newIdentifierVerificationRecordId(主体):证明新电子邮件地址的所有权。这是从上面的POST /api/verifications/verification-code调用返回的verificationRecordId。
curl -X POST https://[tenant-id].logto.app/api/my-account/primary-email \
-H 'authorization: Bearer <access_token>' \
# 验证用户身份(通过密码或现有电子邮件/电话验证)
-H 'logto-verification-id: <verification_record_id_from_existing_identifier>' \
-H 'content-type: application/json' \
# "newIdentifierVerificationRecordId" 证明新电子邮件的所有权(来自上面的验证码流程)
--data-raw '{"email":"...","newIdentifierVerificationRecordId":"<verification_record_id_from_new_email>"}'
与注册时收集的电子邮件一样,通过 Account API 链接的任何电子邮件必须通过你在 控制台 > 安全 > 阻止列表 中配置的 阻止列表 验证。如果电子邮件违反策略,Logto 将拒绝请求并返回详细错误。
删除用户的电子邮件
要删除用户的电子邮件,你可以使用 DELETE /api/my-account/primary-email 端点。
curl -X DELETE https://[tenant-id].logto.app/api/my-account/primary-email \
-H 'authorization: Bearer <access_token>' \
-H 'logto-verification-id: <verification_record_id>'
管理电话
要使用此方法,你需要 配置 SMS 连接器,并确保配置了 BindNewIdentifier 模板。
类似于更新电子邮件,你可以使用 PATCH /api/my-account/primary-phone 端点更新或链接新的电话。并使用 DELETE /api/my-account/primary-phone 端点删除用户的电话。
链接新的社交连接
要链接新的社交连接,首先你应该使用 POST /api/verifications/social 请求授权 URL。
curl -X POST https://[tenant-id].logto.app/api/verifications/social \
-H 'authorization: Bearer <access_token>' \
-H 'content-type: application/json' \
--data-raw '{"connectorId":"...","redirectUri":"...","state":"..."}'
connectorId:社交连接器的 ID。redirectUri:用户授权应用程序后的重定向 URI,你应该在此 URL 上托管一个网页并捕获回调。state:用户授权应用程序后返回的状态,它是一个用于防止 CSRF 攻击的随机字符串。
在响应中,你会找到一个 verificationRecordId,请保留以备后用。
在用户授权应用程序后,你将在 redirectUri 上收到带有 state 参数的回调。然后你可以使用 POST /api/verifications/social/verify 端点验证社交连接。
curl -X POST https://[tenant-id].logto.app/api/verifications/social/verify \
-H 'authorization: Bearer <access_token>' \
-H 'content-type: application/json' \
--data-raw '{"connectorData":"...","verificationRecordId":"..."}'
connectorData 是用户授权应用程序后社交连接器返回的数据,你需要在回调页面中解析并获取 redirectUri 的查询参数,并将其包装为 JSON 作为 connectorData 字段的值。
最后,你可以使用 POST /api/my-account/identities 端点链接社交连接。
此请求需要两个单独的验证记录 ID:
logto-verification-id(头部):在进行敏感更改之前证明用户的身份。通过 验证用户的密码 或 向用户的现有电子邮件或电话发送验证码 获取。newIdentifierVerificationRecordId(主体):标识要链接的社交身份。这是从上面的POST /api/verifications/social调用返回的verificationRecordId。
curl -X POST https://[tenant-id].logto.app/api/my-account/identities \
-H 'authorization: Bearer <access_token>' \
# 验证用户身份(通过密码或现有电子邮件/电话验证)
-H 'logto-verification-id: <verification_record_id_from_existing_identifier>' \
-H 'content-type: application/json' \
# "newIdentifierVerificationRecordId" 标识要链接的社交连接(来自上面的社交验证流程)
--data-raw '{"newIdentifierVerificationRecordId":"<verification_record_id_from_social>"}'
删除社交连接
要删除社交连接,你可以使用 DELETE /api/my-account/identities 端点。
curl -X DELETE https://[tenant-id].logto.app/api/my-account/identities/[connector_target_id] \
-H 'authorization: Bearer <access_token>' \
-H 'logto-verification-id: <verification_record_id>'
链接新的 WebAuthn 密钥
记得先 启用 MFA 和 WebAuthn。
要使用此方法,你需要在 账户中心设置 中启用 mfa 字段。
步骤 1:将你的前端应用程序来源添加到相关来源
WebAuthn 密钥绑定到一个特定的主机名,称为 Relying Party ID (RP ID)。只有托管在 RP ID 来源上的应用程序才能注册或使用这些密钥进行认证。
由于你的前端应用程序从与 Logto 认证页面不同的域调用 Account API,你需要配置 相关来源 以允许跨域密钥操作。
Logto 如何确定 RP ID:
- 默认设置:如果你只使用 Logto 的默认域
https://[tenant-id].logto.app,则 RP ID 是[tenant-id].logto.app - 自定义域:如果你配置了一个 自定义域,如
https://auth.example.com,则 RP ID 变为auth.example.com
配置相关来源:
使用 PATCH /api/account-center 端点添加你的前端应用程序的来源。例如,如果你的应用程序的账户中心运行在 https://account.example.com:
curl -X PATCH https://[tenant-id].logto.app/api/account-center \
-H 'authorization: Bearer <access_token>' \
-H 'content-type: application/json' \
--data-raw '{"webauthnRelatedOrigins":["https://account.example.com"]}'
WebAuthn 支持最多 5 个唯一的 eTLD+1 标签作为相关来源。eTLD+1(有效顶级域加一个标签)是可注册域部分。例如:
https://example.com、https://app.example.com和https://auth.example.com计为 一个 标签(example.com)https://shopping.com、https://shopping.co.uk和https://shopping.co.jp也计为 一个 标签(shopping)https://example.com和https://another.com计为 两个 标签
如果你需要支持超过 5 个不同的域作为相关来源,请参阅 相关来源请求 文档以获取详细信息。
步骤 2:请求新的注册选项
使用 POST /api/verifications/web-authn/registration 端点请求注册新的密钥。Logto 允许每个用户账户注册多个密钥。
curl -X POST https://[tenant-id].logto.app/api/verifications/web-authn/registration \
-H 'authorization: Bearer <access_token>' \
-H 'content-type: application/json'
你将收到如下响应:
{
"registrationOptions": "...",
"verificationRecordId": "...",
"expiresAt": "..."
}
步骤 3:在本地浏览器中注册密钥
以 @simplewebauthn/browser 为例,你可以使用 startRegistration 函数在本地浏览器中注册密钥。
import { startRegistration } from '@simplewebauthn/browser';
// ...
const response = await startRegistration({
optionsJSON: registrationOptions, // 第 1 步中服务器返回的数据
});
// 保存响应以备后用
步骤 4:验证密钥注册
使用 POST /api/verifications/web-authn/registration/verify 端点验证密钥注册。
此步骤验证由认证器生成的加密签名,以确保密钥是合法创建的,并且在传输过程中没有被篡改。
curl -X POST https://[tenant-id].logto.app/api/verifications/web-authn/registration/verify \
-H 'authorization: Bearer <access_token>' \
-H 'content-type: application/json' \
--data-raw '{"payload":"...","verificationRecordId":"..."}'
payload:第 2 步中本地浏览器的响应。verificationRecordId:第 1 步中服务器返回的验证记录 ID。
步骤 5:链接密钥
最后,你可以使用 POST /api/my-account/mfa-verifications 端点将密钥链接到用户的账户。
curl -X POST https://[tenant-id].logto.app/api/my-account/mfa-verifications \
-H 'authorization: Bearer <access_token>' \
-H 'logto-verification-id: <verification_record_id>' \
-H 'content-type: application/json' \
--data-raw '{"type":"WebAuthn","newIdentifierVerificationRecordId":"..."}'
verification_record_id:一个有效的验证记录 ID,通过验证用户的现有因素获得,你可以参考 获取验证记录 ID 部分以获取更多详细信息。type:MFA 因素的类型,目前仅支持WebAuthn。newIdentifierVerificationRecordId:第 1 步中服务器返回的验证记录 ID。
管理现有的 WebAuthn 密钥
要管理现有的 WebAuthn 密钥,你可以使用 GET /api/my-account/mfa-verifications 端点获取当前密钥和其他 MFA 验证因素。
curl https://[tenant-id].logto.app/api/my-account/mfa-verifications \
-H 'authorization: Bearer <access_token>'
响应体如下:
[
{
"id": "...",
"type": "WebAuthn",
"name": "...",
"agent": "...",
"createdAt": "...",
"updatedAt": "..."
}
]
id:验证的 ID。type:验证的类型,WebAuthn表示 WebAuthn 密钥。name:密钥的名称,可选字段。agent:密钥的用户代理。
使用 PATCH /api/my-account/mfa-verifications/{verificationId}/name 端点更新密钥名称:
curl -X PATCH https://[tenant-id].logto.app/api/my-account/mfa-verifications/{verificationId}/name \
-H 'authorization: Bearer <access_token>' \
-H 'logto-verification-id: <verification_record_id>' \
-H 'content-type: application/json' \
--data-raw '{"name":"..."}'
使用 DELETE /api/my-account/mfa-verifications/{verificationId} 端点删除密钥:
curl -X DELETE https://[tenant-id].logto.app/api/my-account/mfa-verifications/{verificationId} \
-H 'authorization: Bearer <access_token>' \
-H 'logto-verification-id: <verification_record_id>'
链接新的 TOTP
记得先 启用 MFA 和 TOTP。
要使用此方法,你需要在 账户中心设置 中启用 mfa 字段。
步骤 1:生成 TOTP 密钥
使用 POST /api/my-account/mfa-verifications/totp-secret/generate 端点生成 TOTP 密钥。
curl -X POST https://[tenant-id].logto.app/api/my-account/mfa-verifications/totp-secret/generate \
-H 'authorization: Bearer <access_token>' \
-H 'content-type: application/json'
响应体如下:
{
"secret": "..."
}
步骤 2:向用户显示 TOTP 密钥
使用密钥生成二维码或直接显示给用户。用户应将其添加到他们的认证器应用程序(如 Google Authenticator、Microsoft Authenticator 或 Authy)。
二维码的 URI 格式应为:
otpauth://totp/[Issuer]:[Account]?secret=[Secret]&issuer=[Issuer]
示例:
otpauth://totp/YourApp:user@example.com?secret=JBSWY3DPEHPK3PXP&issuer=YourApp
步骤 3:绑定 TOTP 因素
在用户将密钥添加到他们的认证器应用程序后,他们需要验证并将其绑定到他们的账户。使用 POST /api/my-account/mfa-verifications 端点绑定 TOTP 因素。
curl -X POST https://[tenant-id].logto.app/api/my-account/mfa-verifications \
-H 'authorization: Bearer <access_token>' \
-H 'logto-verification-id: <verification_record_id>' \
-H 'content-type: application/json' \
--data-raw '{"type":"Totp","secret":"..."}'
verification_record_id:一个有效的验证记录 ID,通过验证用户的现有因素获得。你可以参考 获取验证记录 ID 部分以获取更多详细信息。type:必须为Totp。secret:第 1 步中生成的 TOTP 密钥。
用户一次只能拥有一个 TOTP 因素。如果用户已经有一个 TOTP 因素,尝试添加另一个将导致 422 错误。
管理备份代码
记得先 启用 MFA 和备份代码。
要使用此方法,你需要在 账户中心设置 中启用 mfa 字段。
步骤 1:生成新的备份代码
使用 POST /api/my-account/mfa-verifications/backup-codes/generate 端点生成一组新的 10 个备份代码。
curl -X POST https://[tenant-id].logto.app/api/my-account/mfa-verifications/backup-codes/generate \
-H 'authorization: Bearer <access_token>' \
-H 'content-type: application/json'
响应体如下:
{
"codes": ["...", "...", "..."]
}
步骤 2:向用户显示备份代码
在将备份代码绑定到用户账户之前,你必须将它们显示给用户,并指示他们:
- 立即下载或写下这些代码
- 将它们存储在安全的位置
- 了解每个代码只能使用一次
- 知道这些代码是他们失去对主要 MFA 方法的访问权限时的最后手段
你应该以清晰、易于复制的格式显示代码,并考虑提供下载选项(例如,作为文本文件或 PDF)。
步骤 3:将备份代码绑定到用户账户
使用 POST /api/my-account/mfa-verifications 端点将备份代码绑定到用户账户。
curl -X POST https://[tenant-id].logto.app/api/my-account/mfa-verifications \
-H 'authorization: Bearer <access_token>' \
-H 'logto-verification-id: <verification_record_id>' \
-H 'content-type: application/json' \
--data-raw '{"type":"BackupCode","codes":["...","...","..."]}'
verification_record_id:一个有效的验证记录 ID,通过验证用户的现有因素获得。你可以参考 获取验证记录 ID 部分以获取更多详细信息。type:必须为BackupCode。codes:在上一步中生成的备份代码数组。
- 用户一次只能拥有一组备份代码。如果所有代码都已使用,用户需要生成并绑定新代码。
- 备份代码不能是唯一的 MFA 因素。用户必须至少启用一个其他 MFA 因素(如 WebAuthn 或 TOTP)。
- 每个备份代码只能使用一次。
查看现有备份代码
要查看现有备份代码及其使用状态,请使用 GET /api/my-account/mfa-verifications/backup-codes 端点:
curl https://[tenant-id].logto.app/api/my-account/mfa-verifications/backup-codes \
-H 'authorization: Bearer <access_token>'
响应体如下:
{
"codes": [
{
"code": "...",
"usedAt": null
},
{
"code": "...",
"usedAt": "2024-01-15T10:30:00.000Z"
}
]
}
code:备份代码。usedAt:代码使用的时间戳,如果尚未使用则为null。
管理用户会话
列出活动会话
要列出用户的活动会话,你可以使用 GET /api/my-account/sessions 端点。
- 需要
UserScope.Sessions权限才能访问此端点。 - 账户中心设置中的
Sessions字段必须设置为ReadOnly或Edit。
curl https://[tenant-id].logto.app/api/my-account/sessions \
-H 'authorization: Bearer <access_token>' \
-H 'logto-verification-id: <verification_record_id>' \
-H 'content-type: application/json'
通过会话 ID 撤销会话
要撤销特定会话,请使用 DELETE /api/my-account/sessions/{sessionId} 端点。
- 需要
UserScope.Sessions权限才能访问此端点。 - 账户中心设置中的
Sessions字段必须设置为Edit。
curl -X DELETE https://[tenant-id].logto.app/api/my-account/sessions/{sessionId} \
-H 'authorization: Bearer <access_token>' \
-H 'logto-verification-id: <verification_record_id>' \
-H 'content-type: application/json'
可选查询参数:
revokeGrantsTarget:可选地指定要与会话一起撤销的授权目标。可能的值:all:撤销与会话关联的所有授权。firstParty:仅撤销与会话关联的第一方应用程序授权。(推荐用于大多数用例,因为它撤销了你自己的应用程序的访问权限,同时保留了第三方应用程序授权,从而提供更好的用户体验。)- 未指定:默认行为是撤销没有
offline_access权限的授权,这通常意味着撤销会话的非刷新令牌授权。
管理用户授权的应用程序(授权)
当用户需要从其账户设置页面查看和撤销授权的应用程序时,使用用户授权的应用程序(授权)API。
- 应用程序授权 API 与会话 API 共享相同的权限模型。
- 需要
UserScope.Sessions权限。 - 账户中心设置中的
Sessions字段必须启用:ReadOnly或Edit以列出授权。Edit以撤销授权。
列出活动应用程序授权
要列出当前用户的活动应用程序授权,请使用 GET /api/my-account/grants 端点。
curl https://[tenant-id].logto.app/api/my-account/grants \
-H 'authorization: Bearer <access_token>' \
-H 'logto-verification-id: <verification_record_id>' \
-H 'content-type: application/json'
可选查询参数:
appType=firstParty:仅返回第一方应用程序授权。appType=thirdParty:仅返回第三方应用程序授权。- 省略
appType:返回所有活动授权。
curl "https://[tenant-id].logto.app/api/my-account/grants?appType=thirdParty" \
-H 'authorization: Bearer <access_token>' \
-H 'logto-verification-id: <verification_record_id>' \
-H 'content-type: application/json'
通过授权 ID 撤销应用程序授权
要撤销特定应用程序授权,请使用 DELETE /api/my-account/grants/{grantId} 端点。
curl -X DELETE https://[tenant-id].logto.app/api/my-account/grants/{grantId} \
-H 'authorization: Bearer <access_token>' \
-H 'logto-verification-id: <verification_record_id>' \
-H 'content-type: application/json'
当授权被撤销时,先前为该授权颁发的不透明访问令牌和刷新令牌将失效。