首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Keycloak自定义以在身份验证流中运行自定义java

Keycloak自定义以在身份验证流中运行自定义java
EN

Stack Overflow用户
提问于 2019-04-01 14:48:23
回答 2查看 6.6K关注 0票数 10

请让我知道,如果这不是正确的地方张贴,但我一直在寻找有关这方面的信息,似乎找不到一个简明的答案。

我一直试图使用keycloak来满足我们的应用程序的用户管理要求。虽然我已经发现钥匙斗篷是非常有能力和相当有效的,但我遇到了可能是一个死胡同,我们的使用。

背景:

传统上,我们的应用程序使用一个非常基本的登录框架来验证身份验证。然后,使用第三方应用程序(我们不能更改),通过wsdl操作标识用户将具有的角色,并将其插入应用程序数据库。

例如,如果我们验证用户John的存在并验证他的凭据,我们将在我们的java代码中调用wsdl以获得用户应该具有的角色(超级用户、来宾、常规用户)。显然,整个框架都有很大的缺陷,最终,这就是我们选择使用keycloak的原因。

问题

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

我正在寻找的本质上是如何配置身份验证流,以便在验证凭据之后,但在授予访问权限之前,在java中运行类似于"hello world“这样简单的内容。

不确定是否可以使用认证SPI

EN

回答 2

Stack Overflow用户

发布于 2019-04-09 12:57:17

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

用户存储SPI非常广泛,因此Keycloak提供了2种重用Keycloak中已经存在的特性的方法:

  1. 让用户在外部数据库和增加密钥披风的功能中使用
  2. 从外部数据库将用户存储在Keycloak和导入相关信息中

每种方法都有正反两方面的记录。使用上述方法之一,您可以实现一个仅用于用户组管理的使用远程服务的小型提供者。

票数 4
EN

Stack Overflow用户

发布于 2019-04-09 16:40:21

是。可以使用身份验证SPI编写自定义身份验证器。除了部署之外,为开发Keycloak身份验证SPI而给出的所有步骤都很好。为了部署自定义SPI,在standalone.xml中将jar添加为模块。要添加新创建的SPI,请遵循以下链接:首先,您需要在Keycloak服务器中注册SPI。在standalone.xml或domain.xml中添加另一个SPI。

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

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

代码语言:javascript
运行
复制
<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步骤中创建一个模块:构建代码。

代码语言:javascript
运行
复制
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管理控制台(Authentication)中添加执行流。

欲了解更多细节,请访问:开发/主题/Providers.html 发展/主题/auth-Spi.html

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55457902

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档