首页 > 基础资料 博客日记
关于对wso2和keycloak的token交换的调研
2026-04-28 10:00:02基础资料围观1次
文章关于对wso2和keycloak的token交换的调研分享给大家,欢迎收藏极客资料网,专注分享技术知识
流程梳理手稿
- 用户以keycloak为中心,在wso2中添加了keycloak做为IDP,wso2开发者平台通过keycloak进行登录
- 登录成功后,通过keycloak颁发的auth_code,置换keycloak平台的access_token
- 通过wso2平台的urn:ietf:params:oauth:grant-type:jwt-bearer方式,从keycloak平台交换一个wso2平台的用户token
- 在wso2平台,通过用户token进行应用的添加,在应用中,生成应用的consumer_key和consumer_secret密钥对,简称
app密钥对 - 通过
app密钥对进行client_credentials认证,生成app级别的token,它可以是jwt或者是普通的token(会存储到数据库) - 用户在通过客户端工具(cherry studio,cursor)连接wso2平台的api和mcp服务时,使用这个app的token进行授权
- 如果用户访问的api资源需要认证,那么,在打开链接后,会先跳到keycloak平台进行认证
- 我们通过keycloak平台支持的
token exchange功能,可以将wos2平台的token置换成keycloak平台的token,即统一认证平台的token - 我们在访问api资源之前,可以加一个网关,用来实现wso2 token到keycloak token的交换
WSO2与Keycloak集成认证流程时序图
[下面内容为AI生成]
sequenceDiagram
participant User as 用户/客户端
participant Keycloak as Keycloak IDP
participant DevPortal as WSO2开发者平台
participant WSO2Gateway as WSO2网关
participant APIService as API/MCP服务
%% 第一阶段:用户登录和初始认证
Note over User,DevPortal: 1. 用户登录流程
User->>Keycloak: 用户登录(用户名/密码)
Keycloak-->>User: 返回auth_code
User->>DevPortal: 携带auth_code访问开发者平台
DevPortal->>Keycloak: 2. 用auth_code换取access_token
Keycloak-->>DevPortal: 返回Keycloak access_token
DevPortal->>DevPortal: 3. 通过jwt-bearer换取WSO2用户token
DevPortal-->>User: 登录成功,建立WSO2用户会话
%% 第二阶段:应用创建和令牌生成
Note over User,DevPortal: 4. 应用管理
User->>DevPortal: 创建应用
DevPortal->>DevPortal: 生成应用密钥对(consumer_key/secret)
DevPortal-->>User: 返回应用密钥对
Note over User,DevPortal: 5. 应用令牌生成
User->>DevPortal: 使用client_credentials请求app token
DevPortal->>DevPortal: 验证应用密钥对
DevPortal-->>User: 返回app级别token(JWT/普通token)
%% 第三阶段:API访问和令牌交换
Note over User,APIService: 6. 客户端访问服务
User->>APIService: 使用app token访问API/MCP服务
APIService->>WSO2Gateway: 转发请求(携带WSO2 token)
Note over WSO2Gateway,Keycloak: 7. 认证检查和跳转
APIService-->>User: 需要认证,重定向到Keycloak
User->>Keycloak: 用户认证(如需要)
Keycloak-->>User: 认证完成,重定向回服务
Note over WSO2Gateway,Keycloak: 8. Token交换流程
WSO2Gateway->>Keycloak: 9. 通过token exchange交换token
Keycloak-->>WSO2Gateway: 返回Keycloak平台token
Note over WSO2Gateway,APIService: 10. 最终API访问
WSO2Gateway->>APIService: 10. 携带Keycloak token访问API资源
APIService-->>WSO2Gateway: 返回API响应
WSO2Gateway-->>User: 返回最终结果
流程步骤说明
阶段一:用户登录和初始认证
- 用户登录:用户通过Keycloak进行认证,获取auth_code
- Token交换:WSO2开发者平台使用auth_code从Keycloak换取access_token
- 统一令牌:WSO2通过jwt-bearer授权方式,从Keycloak获取WSO2用户token
阶段二:应用创建和令牌生成
- 应用创建:用户在WSO2开发者平台创建应用,生成consumer_key/consumer_secret
- 应用令牌:通过client_credentials授权类型生成app级别token(可以是JWT或普通token)
阶段三:API访问和令牌交换
- 客户端访问:客户端工具使用app token连接WSO2 API/MCP服务
- 认证检查:访问需要认证的API时,系统检查并重定向到Keycloak
- Token交换:WSO2网关通过Keycloak的token exchange功能,将WSO2 token交换为Keycloak token
- API访问:使用统一的Keycloak token访问最终的API资源
关键技术点
- OAuth 2.0流程:混合使用了authorization_code和client_credentials授权类型
- Token Exchange:WSO2与Keycloak之间的令牌交换机制
- 统一认证:以Keycloak为中心的统一身份管理
- 应用级认证:通过client_credentials实现应用级别的API访问
- 用户级认证:通过用户令牌实现需要用户上下文的操作
这个时序图清晰地展示了整个复杂认证流程中各个组件之间的交互关系,特别是WSO2与Keycloak之间的令牌交换机制。
文章来源:https://www.cnblogs.com/lori/p/19941749
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:jacktools123@163.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:jacktools123@163.com进行投诉反馈,一经查实,立即删除!
标签:
相关文章
最新发布
- # 【拾零】0 - 开箱即用的现代风终端 |Ghostty + Fish + Starship + fzf + zoxide + Raycast
- Redis--Set、ZSet操作命令和benchmark测试工具
- 异源数据同步 → 记一次 DataX 已同步数据量优化
- SourceGenerator之扑风捉影
- 【译】在 Visual Studio 中完全掌控您的悬浮窗口
- 当 CGO 遇见 Zig:一种更优雅的折腾方式,对比 GCC 后端
- NVIDIA H200/H20 DeepSeek-V4-Pro 部署指南、压测性能与稳定性调优建议
- 关于对wso2和keycloak的token交换的调研
- 内存化系统设计
- 《HelloGitHub》第 121 期

