Keycloak自定义以在身份验证流程中运行自定义Java

时间:2019-04-01 14:48:24

标签: java security architecture redhat keycloak

请让我知道这是否不是发布的正确位置,但是我一直到处寻找有关此问题的信息,而且似乎找不到简明的答案。

我一直在尝试使用keycloak来满足我们应用程序的用户管理要求。虽然我发现keycloak非常有效并且很有效,但是我碰到了可能对我们的使用来说是死胡同。

背景

传统上,我们的应用程序使用了非常基本的登录框架来验证身份验证。然后使用我们无法更改的第三方应用程序,通过wsdl操作确定用户将具有的角色并将其插入我们的应用程序数据库。

例如,如果我们验证用户John Doe的存在并验证他的凭据,我们将在Java代码中调用wsdl以获取该用户应具有的角色(超级用户,来宾,常规用户)。显然,整个框架都是有缺陷的,归根结底,这就是为什么我们选择使用keycloak的原因。

问题

不幸的是,正如我提到的,我们不能更改第三方应用程序,并且必须从此wsdl操作中获取用户角色映射。我知道有一种方法可以通过java函数创建/修改keycloak的用户和角色。但是,为了保持此体系结构的模块化,是否有一种方法可以配置身份验证流,以使其到达在密钥斗篷侧的此WSDL进行角色映射? (即不在应用程序代码中,而可能在身份验证流程中的代码片段中)

我要寻找的基本上是如何配置身份验证流,以便在验证凭据之后但在授予访问权限之前,在Java中运行像“ hello world”一样简单的操作。

不确定是否可以使用Authentication SPI

2 个答案:

答案 0 :(得分:0)

您需要的是User Storage SPI。 Keycloak文档提供了一个很好的演练,实现了一个简单的基于文件的用户存储提供程序。 Here是文档中使用的示例项目的完整源代码。

用户存储SPI非常广泛,因此Keycloak提供了两种方法来重用Keycloak中已经存在的功能:

  1. 让您的用户进入外部数据库和augment it with Keycloak features
  2. 将用户存储在Keycloak和来自外部数据库的import相关信息中

每种方法都有记录的利弊。使用上述方法之一,您可以实现仅将远程服务用于用户组管理的微型提供程序。

答案 1 :(得分:0)

是的。 您可以使用身份验证SPI编写自定义身份验证器。 除部署外,为开发Keycloak身份验证SPI给出的所有步骤均正常运行。 要部署自定义SPI,请将jar作为模块添加到standalone.xml中。 要添加新创建的SPI,请点击以下链接: 首先,您需要在Keycloak服务器中注册SPI。 在standalone.xml或domain.xml中添加另一个SPI。

<spi name="authenticator_name"> <provider name="authenticator_name" enabled="true"/> </spi>

要为Keycloak服务器注册模块,请在Keycloak服务器子系统中添加一个模块:

<subsystem xmlns="urn:jboss:domain:keycloak-server:1.1">
  <web-context>auth</web-context>
    <providers>
      <provider>classpath:${jboss.home.dir}/providers/*</provider>
      <provider>module:com.abc</provider>
        .....
        .....
</subsystem>

一旦进行了此更改,就需要在com / abc上创建一个模块 脚步: 构建代码。

set KEYCLOAK_HOME=Keycloak Installation folder
%KEYCLOAK_HOME%/bin/jboss-cli.sh --command="module add --name={module_name}  --resources={path to your jar/your jar file name}  --dependencies=org.keycloak.keycloak-core,org.keycloak.keycloak-server-spi,org.keycloak.keycloak-server-spi-private,org.keycloak.keycloak-services,org.jboss.resteasy.resteasy-jaxrs,javax.ws.rs.api,org.keycloak.keycloak-common"

一旦在Keycloak服务器中添加了SPI模块,请启动Keycloak服务器并在Keycloak管理控制台(身份验证)中添加执行流程。

有关更多详细信息,请访问: http://www.keycloak.org/docs/3.0/server_development/topics/providers.html http://www.keycloak.org/docs/3.0/server_development/topics/auth-spi.html

相关问题