Keycloak Customization在身份验证流程中运行自定义java

问题描述 投票:7回答:2

如果这不是发布的正确位置,请告诉我,但我一直在寻找有关此问题的信息,似乎无法找到简明的答案。

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

背景:

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

例如,如果我们验证用户John Doe存在并验证其凭据,我们在java代码中调用wsdl以获取用户应具有的角色(超级用户,访客,普通用户)。显然这整个框架都存在很大的缺陷,最终,这就是我们选择使用keycloak的原因。

问题

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

我正在寻找的本质上是如何配置身份验证流程以在验证凭据之后但在授予访问权限之前在java中运行像“hello world”这样简单的事情。

不确定是否可以使用Authentication SPI

java security architecture redhat keycloak
2个回答
0
投票

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

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

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

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


0
投票

是。您可以使用Authentication SPI编写自定义验证器。除了部署之外,开发Keycloak Authentication 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-server子系统中添加模块:

<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

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.