请让我知道,如果这不是正确的地方张贴,但我一直在寻找有关这方面的信息,似乎找不到一个简明的答案。
我一直试图使用keycloak来满足我们的应用程序的用户管理要求。虽然我已经发现钥匙斗篷是非常有能力和相当有效的,但我遇到了可能是一个死胡同,我们的使用。
背景:
传统上,我们的应用程序使用一个非常基本的登录框架来验证身份验证。然后,使用第三方应用程序(我们不能更改),通过wsdl操作标识用户将具有的角色,并将其插入应用程序数据库。
例如,如果我们验证用户John的存在并验证他的凭据,我们将在我们的java代码中调用wsdl以获得用户应该具有的角色(超级用户、来宾、常规用户)。显然,整个框架都有很大的缺陷,最终,这就是我们选择使用keycloak的原因。
问题
不幸的是,正如我提到的,我们不能更改第三方应用程序,我们必须从这个wsdl操作中获得用户角色映射。我知道有一种方法可以通过java函数来创建/修改keycloak的用户和角色。但是,为了保持该体系结构的模块化,是否有一种方法可以配置身份验证流,以达到密钥披肩侧的WSDL以进行角色映射?(即不是在应用程序代码中,而是在身份验证流中的划线中)
我正在寻找的本质上是如何配置身份验证流,以便在验证凭据之后,但在授予访问权限之前,在java中运行类似于"hello world“这样简单的内容。
不确定是否可以使用认证SPI
发布于 2019-04-09 12:57:17
发布于 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子系统中添加一个模块:
<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管理控制台(Authentication)中添加执行流。
欲了解更多细节,请访问:开发/主题/Providers.html 发展/主题/auth-Spi.html
https://stackoverflow.com/questions/55457902
复制相似问题