oauth-userinfo 端点仅返回 #curity 中的“sub”值

问题描述 投票:0回答:4

我尝试修改范围和声明设置,但无济于事。

我尝试通过此curl 调用检索用户信息:

curl -Ssk \
"http://auth.dev.org/oauth/v2/oauth-userinfo?scope=profile" \ 
-H "Authorization: Bearer _0XBPWQQ_0ee51157-949d-49da-91e9-1d7f19945acc" \
-d "scope=openid profile"

它只是返回:

{"sub":"9dcbd13683ff1e37cbc28956a8b062c9c3bae31087a29ebe9fee15b5cecd7ac1"}⏎

oauth-2.0 oauth openid-connect openid curity
4个回答
1
投票

用户信息端点以及该端点返回的内容由您要连接的授权服务器的所有者配置。

虽然更改范围(例如添加电子邮件范围或个人资料范围)可能会在某些授权服务器上返回用户个人资料信息,但不会在所有授权服务器上执行此操作。

您收到的响应表明该授权服务器不会通过用户信息端点返回其他声明。

configuring-a-claim的文档暗示这是需要正确配置的内容。


0
投票

从用户信息端点返回的内容基于用于调用该端点的访问令牌的范围。在对 user-info 的调用中添加

scope
参数不会改变任何内容。您应该提出更广泛范围的授权请求,例如
openid profile email
。这样,访问令牌将包含使您能够读取该信息的范围。

如果您在令牌中有关于用户的自定义声明(除了 OpenID Connect 提供的默认值之外)并且您希望它们在用户信息端点中返回,那么您必须正确配置它。请查看本教程:https://curity.io/resources/learn/token-designer/,了解如何配置在用户信息端点返回哪些声明(并插入到令牌中)。基本上,您需要做的是让 Curity Identity Server 知道声明

X
应与范围
Y
关联,并且您希望在用户信息端点返回该声明。然后,如果您使用包含范围
Y
的访问令牌调用用户信息端点,则响应将包含声明
X


0
投票

我认为 Curity 中令人困惑的 UI 是可以原谅的。直到您进入令牌设计器 UI(对于活动声明映射器),您才能看到哪些声明与任何范围关联 - 而不是查看您甚至可能没有使用的范围的所有活动声明。通过确保为 openid 范围分配了电子邮件和首选用户名声明,并确保在对

/oauth-token
端点的初始请求中定义了 openid 范围,我设法实现了我想要的目标。 user_id 令牌现在包含这些所需的字段。


0
投票

我遇到了完全相同的问题。上面的解决方案不是解决方案,而是一个解决方案。我正在请求范围“openid 电子邮件个人资料”,因此我应该收到与范围电子邮件和个人资料相关的声明。正在使用 curity 中的默认声明映射器。然而,我的 ID 令牌中的信息很少,如果我调用 userinfo 端点,我只会得到...

{
   sub: <number>
}
© www.soinside.com 2019 - 2024. All rights reserved.