代码之家  ›  专栏  ›  技术社区  ›  onderbewustzijn

如何更改key斗篷OpenID Connect Java适配器生成的认证Url?

  •  1
  • onderbewustzijn  · 技术社区  · 8 年前

    我们将keydove Java适配器4.5.0与EAP7.1结合使用。当我们配置keydepot.json时 auth-server-url url https://authentication.country.com/op/v1/auth . 到现在为止,一直都还不错。

    当我们导航到我们的应用程序时,我们被转发到 https://authentication.country.com/op/v1/auth/realms/KeycloakOIDCRealm/protocol/openid-connect/auth?response_type=code&client_id=fac9d161-d27d-493d-uze896zed78&redirect_uri=....

    这不好,因为我们使用自己的身份提供者。卸下 realms/KeycloakOIDCRealm/protocol/openid-connect/ url的一部分,将其正确转发给标识提供程序。所以keydepot适配器默认情况下会添加它,假设我们总是使用keydepot作为身份提供者。在我们使用SAML之前,没有这个问题。

    我们如何为适配器配置keydepot.json以避免添加 域/keydropeoidcrealm/protocol/openid connect/

    1 回复  |  直到 8 年前
        1
  •  3
  •   anon anon    6 年前

    我联系了keydeap的支持人员,他们的回答如下:

    实际上,像“/realms/{realm name}/protocol/openid connect/auth”这样的字符串模板是硬编码到key斗篷适配器中的。

    幸运的是,似乎有一个解决办法。在keydrope中,有一种多租户机制;它要求您提供一个解析器,该解析器将基于请求参数返回keydeposteployment实例。 它的一个额外特性是,您可以完全重新定义key斗篷部署的行为。例如,您可以扩展org.keydrope.adapters.keydropeadeployment并重写其resolveURL()方法,使URL指向第三方IDP。

    这种方法不需要对适配器代码进行任何修改,因此我建议您从它开始。但是,我不排除可能出现的进一步不兼容。

    当然还有其他的选择,比如使用第三方IDP的等价物作为keydove适配器,或者使用其他OpenID Connect Java库,甚至代理级别的适配器,比如apache-mod\u auth\u openidc或keydove Gatekeeper。但我知道这可能需要代码重写,所以你应该把这些选项当作最后的手段。

    相反,OIDC允许一些自由。目前,key斗篷OIDC适配器不使用任何标准元数据,而是使用硬编码模板生成url。我认为key斗篷适配器可以使用OIDC对SAML元数据的粗略等效,即“众所周知的”URL。

    从理论上讲,key斗篷OIDC适配器可以接收这些元数据,而不是硬编码URL模板。对我来说,这可能是一个有价值的补充,但令人惊讶的是,我没有看到任何相关的JIRA问题。也许key斗篷开发者可以给我们一些反馈。

    最后,我们做了一个没有任何配置或keydepot Jboss服务器的SAML适配器回退(01/2019)。应该每年检查一次,看看keydeap是否也会对OpenID执行同样的操作。