OIDC的UserInfo端点

OIDC的UserInfo端点

OIDC是OAuth2的一个扩展,用于获取用户信息,如用户名、邮箱等,获取其他定制的用户信息需要自定义 UserInfo 端点。

1.UserInfo 端点谁调用:

/userinfo 由 OIDC 客户端(RP) 调用,不是浏览器、也不是资源服务器。在你们的架构里就是 BFF(inventory-app / order-app),

以服务端到服务端方式带着 Access Token 调用:

复制代码
GET {issuer}/userinfo
Authorization: Bearer <access_token>

2.UserInfo 端点什么时候调用:

时机 1:OIDC 登录流程中(最常见)

授权码流程换完 token 之后,客户端如果想补充用户资料,就会调一次。如果 BFF 用的是 Spring Security 的 oauth2Login(),框架的

OidcUserService 会在登录处理时自动调它------条件是:Provider 元数据(/.well-known/openid-configuration)里声明了 userinfo 端点

请求的 scope 包含 openid + profile/email/address/phone 之一调回来的 claims 会合并进 OidcUser,用于建立登录会话。

时机 2:按需随时调用

端点不会主动推送,客户端任何时候需要用户资料都可以调,典型场景:只有 Access Token、没有 ID Token 的纯 OAuth2 场景需要比 ID Token 更

全/更新的资料(ID Token 只是签发时刻的快照)前端 SPA 登录后拉取用户 profile 展示

当前实际状况:

项目使用的是 Spring Authorization Server 通过 .oidc(Customizer.withDefaults()) 启用的默

认 UserInfo 端点(/userinfo)。默认行为是从 ID Token 的 claims 中返回用户信息。而你的定制用户信息(tenant_id、

tenant_code、tenant_name、roles)是通过 jwtTokenCustomizer() 直接写入 ID Token 的,并没有走 UserInfo 端点。由于默

认 UserInfo 端点会从 ID Token claims 取值,这些定制信息也会随默认 /userinfo 端点返回。

如果将来需要完全自定义 UserInfo 返回内容(例如按 scope 过滤、增加新字段),才需要提供自定义的 OidcUserInfoMapper Bean。

相关推荐
超级架构师13 小时前
让 COBOL 长出 AI 大脑:原生 Agent 核心框架 praxo-core 深度剖析
c语言·开发语言·c++·人工智能·python·架构·ai编程
甜到心里的蛋糕13 小时前
抖音评论自动回复机器人部署实践:无头 Chrome + DeepSeek + NapCat(2C2G 云主机)
java·jvm·chrome·python·抖音·deepseek
Java爱好狂.13 小时前
阿里1658页Java面试题总结(含答案)
java·后端·高并发·架构师·java面试·java面试题·java八股文
Thanks_ks13 小时前
从 0.1+0.2 不等于 0.3 说起:聊聊浮点数精度问题
java·python·数值计算·精度丢失·bigdecimal·浮点数·ieee754
4SAPI14 小时前
企业级大模型工作流基础设施选型指南:4SAPI、硅基流动与 OpenRouter 的架构权衡
运维·人工智能·架构·自动化
vipxieliang14 小时前
软件架构的核心原则:从抽象到权衡
架构
海鸥-w14 小时前
区域名称同步存储实现笔记
java·笔记
元岳数字人小元14 小时前
告别云端依赖,数字人本地部署筑牢项目安全底座
人工智能·安全·架构·开源·人机交互·交互
Rain的Java大神之路14 小时前
LeetCode 21 合并两个有序链表:一道 Easy 题,凭什么刷掉一半候选人?
java·后端·算法
小白的码BUG之路14 小时前
K8S -- 集群搭建环境基础
java·服务器·kubernetes