我的项目有一个具有多个角色的SAML身份提供程序,我们希望将其映射到Keycloak服务器中的单个角色。
不幸的是,isAttributePresent方法期望在SAML响应中仅映射和检查一个IdP角色。
如果为映射到单个角色的每个IdP角色创建一个映射器,则第二次登录后登录流程将失败,因为映射器是一一评估的,如果最后一个要评估的映射器失败,则该角色将被删除。
映射器:
用户:
user1:
首次登录:
importNewUser为mapper1调用,KC_ROLE已关联
importNewUser被mapper2调用,KC_ROLE被关联
user2:
user3:
因此,用户1和用户3将具有该角色,而用户2将没有角色。
有没有解决方法?有支持多值的计划吗?
答案 0 :(得分:0)
作为一种可能的解决方法,您将必须一个一个地映射角色,然后为应用程序配置所有需要授予的角色。
或者,您可以选择创建自己的映射器,该映射器可以具有多个值(但这是扩展/集成主题)。
另一种可能的解决方法是在身份提供者联合会使用的中间/外部SAML IdP级别执行映射和合并属性,以便Keycloak实例仅获得一个属性以映射到keycloak中的领域角色。