获取组织内的用户信息
使用场景
这通常用于用户资料页面,需要展示用户的组织 (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)(当未指定 API 资源时签发),你仍然可以通过 userinfo 端点获取组织 (Organization) 成员信息。当你请求 urn:logto:scope:organizations 权限 (Scope) 时,响应中会包含 organizations 及其他与组织 (Organization) 相关的声明 (Claims)。
注意,不透明令牌 (Opaque token) 不能作为组织令牌 (Organization token) 用于访问组织 (Organization) 专属资源。详见不透明令牌 (Opaque token) 与组织 (Organizations)。