跳到主要内容

获取组织内的用户信息

使用场景

这通常用于用户资料页面,需要展示用户的组织 (Organization) 信息。

组织 (Organization) 用户信息

如何实现

有两种方式可以获取组织 (Organization) 内的用户信息。

解码 ID 令牌 (ID token)

ID 令牌 (ID token) 是一个标准的 JWT,包含用户资料信息和与组织 (Organization) 相关的声明 (Claims)。调用 SDK 方法 decodeIdToken() 可以获得如下的 JSON 对象:

{
"sub": "aauqbb63vg4s",
"name": "John Doe",
"picture": "https://example.com/johndoe.png",
"email": "johndoe@example.com",
// ...
"organizations": [
"organization-id-1",
"organization-id-2",
"organization-id-3"
// ...
],
"organization_roles": [
"organization-id-1:admin",
"organization-id-2:member",
"organization-id-3:viewer"
// ...
],
"aud": "admin-console"
// ...
}

然而,ID 令牌 (ID token) 只会在认证 (Authentication) 时签发,如果用户资料之后发生变化,令牌内容可能会过时。 如需获取最新信息,请使用下方第二种方式,或调用 clearAllTokens() 并重新发起认证 (Authentication) 流程以获取新的 ID 令牌 (ID token)。

await logtoClient.clearAllTokens();
logtoClient.signIn({
redirectUri: 'https://your-app.com/callback',
prompt: 'consent',
});

如果会话仍然有效,signIn 调用会在无需输入凭据的情况下重定向回你的应用。从用户的角度来看,应用只是刷新了一下,后台会自动签发新的 ID 令牌 (ID token)。

/oidc/me 端点获取用户信息

你也可以请求 /oidc/me,在组织 (Organization) 上下文中实时获取用户信息。调用 SDK 方法 fetchUserInfo()

不透明令牌 (Opaque token) 支持:

如果你正在使用不透明令牌 (Opaque token)(当未指定 API 资源时签发),你仍然可以通过 userinfo 端点获取组织 (Organization) 成员信息。当你请求 urn:logto:scope:organizations 权限 (Scope) 时,响应中会包含 organizations 及其他与组织 (Organization) 相关的声明 (Claims)。

注意,不透明令牌 (Opaque token) 不能作为组织令牌 (Organization token) 用于访问组织 (Organization) 专属资源。详见不透明令牌 (Opaque token) 与组织 (Organizations)