马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
流程梳理手稿
- 用户以keycloak为中央,在wso2中添加了keycloak做为IDP,wso2开辟者平台通过keycloak举行登录
- 登录乐成后,通过keycloak颁发的auth_code,置换keycloak平台的access_token
- 通过wso2平台的urn:ietf:params
auth: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之间的令牌互换机制。
|