跳到主要内容

获取组织内的用户信息

使用场景​

这通常用于用户资料页面,需要展示用户的组织 (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)。