网站首页 全球最实用的IT互联网站!

人工智能P2P分享Wind搜索发布信息网站地图标签大全

当前位置:诺佳网 > 软件工程 > 后端开发 > Java >

wso2~对接外部认证系统keycloak

时间:2025-05-18 19:42

人气:

作者:admin

标签:

导读:https://shammijayasinghe.medium.com/saml-sso-wso2-api-manager-and-keycloak-bd3eec6038b2 https://chakray.com/how-use-keycloak-as-wso2-api-manager-ident...

在 WSO2 Identity Server 或 WSO2 API Manager 中,Identity Providers (身份提供者) 功能允许您将外部身份管理系统(如 Keycloak、Azure AD、Okta 等)集成到 WSO2 平台中,实现联合身份认证(Federation)。以下是使用 WSO2 Identity Providers 功能并与 Keycloak 对接的完整步骤:

1. Identity Providers 功能概述**

  • 作用:
    • 允许用户通过外部身份提供者(如 Keycloak)登录 WSO2 管理的应用或 API。
    • 支持协议:SAML 2.0、OAuth 2.0/OpenID Connect (OIDC)、WS-Federation 等。
  • 典型场景:
    • 企业已有 Keycloak 用户体系,需与 WSO2 平台集成。
    • 需要将 WSO2 作为身份代理(Proxy),集中管理多个外部身份源。

2. 配置 Keycloak 作为外部 Identity Provider**

步骤 1:在 Keycloak 中创建客户端(Client)

  1. 登录 Keycloak 管理控制台
    访问 https://keycloak-host:port/auth/admin。

  2. 创建 Realm(如果尚未创建)
    进入默认的 master Realm 或新建一个(如 my-realm)。

  3. 创建客户端(Client)

    • 导航到 Clients → Create。
    • 设置:
      • Client ID:wso2-client(自定义名称)。
      • Client Protocol:openid-connect。
    • 保存后,进入客户端配置:
      • Valid Redirect URIs:添加 WSO2 的回调地址,如 https://wso2-host:9443/commonauth。
      • Web Origins:*(或限制为 WSO2 域名)。
      • 启用 Client authentication(生成客户端密钥)。
  4. 记录关键信息

    • Client ID:wso2-client
    • Client Secret:在 Credentials 标签页中获取。
    • Keycloak Realm 的 OpenID Endpoint:
      https://keycloak-host:port/auth/realms/my-realm/.well-known/openid-configuration

步骤 2:在 WSO2 中配置 Keycloak 为外部 Identity Provider

  1. 登录 WSO2 管理控制台
    访问 https://wso2-host:9443/carbon,使用管理员账号登录。

  2. 创建新的 Identity Provider

    • 导航到 Main → Identity → Identity Providers → Add。
    • 输入名称(如 Keycloak-IDP)。
  3. 配置 OpenID Connect 连接

    • 在 Federated Authenticators → OpenID Connect Configuration 中:
      • Enable:勾选。
      • Client ID:wso2-client(Keycloak 中创建的客户端 ID)。
      • Client Secret:Keycloak 客户端的密钥。
      • Authorization Endpoint:Keycloak 的 OIDC 授权端点(如 https://keycloak-host:port/auth/realms/my-realm/protocol/openid-connect/auth)。
      • Token Endpoint:Keycloak 的令牌端点(如 https://keycloak-host:port/auth/realms/my-realm/protocol/openid-connect/token)。
      • UserInfo Endpoint:用户信息端点(如 https://keycloak-host:port/auth/realms/my-realm/protocol/openid-connect/userinfo)。
      • JWKS Endpoint:JWKS 端点(如 https://keycloak-host:port/auth/realms/my-realm/protocol/openid-connect/certs)。
      • Callback URL:https://wso2-host:9443/commonauth(与 Keycloak 客户端配置一致)。
  4. 配置声明映射(Claim Mapping)

    • 在 Claim Configuration 中,将 Keycloak 返回的用户属性(如 email、given_name)映射到 WSO2 的本地声明。
    • 示例:
      • Remote Claim:email → Local Claim:http://wso2.org/claims/emailaddress
  5. 保存配置
    点击 Register 完成 Identity Provider 的创建。

3. 配置服务提供者(Service Provider)使用 Keycloak 认证**

场景 1:WSO2 作为服务提供者(SP)

  1. 创建服务提供者(Service Provider)

    • 导航到 Main → Identity → Service Providers → Add。
    • 输入名称(如 My-App)。
  2. 配置联合认证

    • 在 Local & Outbound Authentication Configuration 中:
      • 选择 Federated Authentication。
      • 勾选刚创建的 Keycloak-IDP。
    • 可选:设置认证步骤(多因素认证)。
  3. 配置声明映射
    确保服务提供者使用的声明与 Identity Provider 的映射一致。


场景 2:通过 WSO2 访问 API(API Manager 集成)

  1. 在 API Manager 中启用 Keycloak 认证

    • 登录 API Publisher(https://wso2-host:9443/publisher)。
    • 创建或编辑 API → Runtime Configurations → Security。
    • 勾选 OAuth2 或 OpenID Connect,并关联 Keycloak-IDP。
  2. 订阅 API 并测试

    • 用户通过 Keycloak 登录开发者门户,获取令牌后调用 API。

4. 自定义claim的映射**

将第三方idp的用户字段映射到wso2-apim中,可以按着下面步骤实现

配置deployment.toml,开启自定义claim

如果不开启,它会映射默认的几个字段,如uid,nickName,displayName,mail,roles等

[authentication.endpoint]
enable_custom_claim_mappings = true

kc中定义固定的wso2角色到token中

固定的客户端角色

自定义的token中的元素

wso2中注册用户后具有这个角色

用户每次登录时都会进行用户信息的同步

** IDP到wso2时的对应关系的优先级

找到对应的sp,通过在sp的Claim Configuration,需要注意其它对应的sp也需要有相同的Claim Configuration,否则用户登录这块会出现无法映射的问题。

  1. sp中定义的claim优先于idp
  2. 建议在idp中直接统一定于,避免每个sp中定义的不同,导致系统无法登录的问题

5. 数据的映射

数据何时从第三方IDP同步到wso2
用户通过第三方登录时,当数据有变更,数据会自动同步到wso2系统,它在wso2am_shared_db库中um_user_attribute表存储,如图

作者:仓储大叔,张占岭,
荣誉:微软MVP
QQ:853066980

支付宝扫一扫,为大叔打赏!

温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信