当前位置: 首页 > 知识库问答 >
问题:

KeyClope定制以在身份验证流中运行自定义java

仇炜
2023-03-14

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

我一直在尝试使用KeyClope来满足我们应用程序的用户管理需求。虽然我发现KeyClope非常有能力,也非常有效,但我已经进入了我们使用的死胡同。

背景:

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

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

问题

不幸的是,正如我提到的,我们不能更改第三方应用程序,我们必须从这个wsdl操作中获取用户角色映射。我知道有一种方法可以通过java函数创建/修改keycloak的用户和角色。但是,为了保持这种架构模块化,有没有办法配置身份验证流以在keycloaks端访问此WSDL以进行角色映射?(即不在应用程序代码中,但可能在身份验证流中的脚本中)

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

不确定是否可以使用身份验证SPI

共有2个答案

穆鸿卓
2023-03-14

对您可以使用身份验证SPI编写自定义身份验证程序。除了部署之外,开发KeyClope身份验证SPI的所有步骤都可以正常工作。要部署定制SPI,请将jar作为模块添加到standalone中。xml。要添加新创建的SPI,请遵循以下链接:首先,您需要在KeyClope服务器中注册SPI。在standalone中添加另一个SPI。xml或域。xml。

<代码>

要为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

屈星腾
2023-03-14

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

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

  1. 让您的用户进入外部数据库,并使用KeyClope功能增强它
  2. 将用户存储在KeyClope中,并从外部数据库导入相关信息

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

 类似资料:
  • 我已经用LDAP用户联盟配置了KeyClope。当用户想要登录到应用程序时,他会被重定向到KeyClope登录页面,输入uid/pwd,并使用LDAP绑定进行身份验证。 这还不足以满足我的需求,因为我想实现一些自定义身份验证逻辑,例如: 我如何将自己的身份验证逻辑包含到KeyClope中?

  • 问题内容: 我可以使用Google帐户在AppEngine中对用户进行身份验证的方式非常好。 但是,我需要使用 自定义的身份验证登录系统 。 我将有一个AppUsers表,其中包含用户名和加密密码。 我阅读了有关gae会话的内容,但在启动应用安全性方面需要帮助。 如何跟踪经过身份验证的用户会话?设置cookie? 初学者。 问题答案: 您可以使用cookie来做到这一点……其实并不难。您可以使用C

  • 我在spring MVC项目中实现了一个自定义身份验证提供程序。在我自己的重载authenticate()方法中,我实现了自己的身份验证,其中我构造了自己的UserPasswordAuthenticationToken()并返回对象。 现在,上述对象“UserPasswordAuthentictionToken”中的用户ID被匿名化,密码为null,权限设置为授予该用户的权限。 问题: 这是否会导

  • 问题内容: 这是我的情况: 一个Web应用程序对许多应用程序执行某种SSO 登录的用户,而不是单击链接,该应用就会向正确的应用发布包含用户信息(名称,pwd [无用],角色)的帖子 我正在其中一个应用程序上实现SpringSecurity以从其功能中受益(会话中的权限,其类提供的方法等) 因此,我需要开发一个 自定义过滤器 -我猜想-能够从请求中检索用户信息,通过自定义 DetailsUserSe

  • Postman上有没有办法在执行请求A之前预先执行请求B? 上下文:我创建了一个Symfony应用程序来管理一组web服务。大多数路由只有在用户完全通过身份验证后才能被调用(对于熟悉框架的人使用form_login和防火墙) 因此,我必须先打电话: 邮政 /login 用户名 密码 在能够呼叫之前 获取/某些_安全_路线 (返回 JSON 响应) 当我在Postman构建器中连续手动调用路由时,这

  • 我正在使用fire base制作一个反应原生应用程序,用于使用电子邮件登录im并通过身份验证。但是,有没有办法使用用户名和密码登录?