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

Wildfly 17 Elytron:使用EAR中的类进行服务器端身份验证

於宾白
2023-03-14

通过Picketbox,自定义登录模块可以使用部署模块(例如Wildfly/Standalone/Deployments中的EAR)的功能(甚至可以驻留在其中)在服务器端实现身份验证:

<subsystem xmlns="urn:jboss:domain:security:2.0">
    <security-domains>
        ...
        <security-domain name="MyDomain" cache-type="default">
            <authentication>
                <login-module name="MyLoginModule" code="de.example.wildfly.MyLoginModule" flag="required" module="deployment.de.example.wildfly.login"/>
            </authentication>
        </security-domain>

我的第一次尝试是在Elytron中使用一个自定义领域。但据我所知,自定义领域需要是一个“静态”模块(这意味着它位于wildfly/modules/...)因此无法访问“动态”部署的模块(请参见https://developer.jboss.org/message/984198#984198)。

<subsystem xmlns="urn:wildfly:elytron:7.0" final-providers="combined-providers" disallowed-providers="OracleUcrypto">
    ...
    <security-domains>
        <security-domain name="MyDomain" default-realm="MyRealm" permission-mapper="default-permission-mapper">
            <realm name="MyRealm" role-decoder="from-roles-attribute" />
        </security-domain>
    </security-domains>
    <security-realms>
        ...
        <custom-realm name="MyRealm" module="de.example.wildfly.login" class-name="de.example.wildfly.MyCustomRealm" />

(我省略了更多的安全域配置)

org.springframework.beans.factory.access.BootstrapException: Unable to initialize group definition. Group resource name [classpath:applicationContext-appServerBase.xml], factory key [applicationContextEjb]; nested exception is org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from class path resource [applicationContext-appServerBase.xml]; nested exception is java.io.FileNotFoundException: class path resource [applicationContext-appServerBase.xml] cannot be opened because it does not exist

共有1个答案

臧欣怿
2023-03-14

也许https://github.com/antonyudin/wildfly-securityrealm-ejb正是您要找的。它创建一个SecurityRealm,可以使用与应用程序一起部署的EJB的地址进行配置。

EJB必须无状态,并且必须实现方法map authenticate(String,String) ,该方法使用用户名密码调用。

我想您必须返回一个映射,其中包含用户所属的所有角色null(如果凭据无效)。

 类似资料:
  • GoogleCredential凭证=newGoogleCredential.Builder(). setTransfer(TRANSPORT). setJsonFactory(JSON_FACTORY). setServiceAccount tId("SOMETHING@developer.gserviceaccount.com"). setServiceAccount tScopes(Bigq

  • 我想测试一个WSO2身份提供程序,实际上是它用OpenID配置的联合IdP,我计划使用TraSpeed工具对其进行测试。我正在WEB-INF配置中编辑travelocity.properties文件,将起始参数设置为以下值: 在Tomcat7服务器中声明映像时,它接受新的服务器配置,但代码仍将SAML身份验证激活为主要SSO机制,抛出错误: 是否可以仅使用OpenID堆栈在该Web工具中停用SAM

  • 我有一个移动(本机)和Web应用程序(SPA),它与后端微服务(在核心2.0中开发)对话,以进行身份验证/授权和其他与域相关的功能,该功能已使用Opendi的配置。这两个应用程序都获得了访问令牌。我遇到的问题是,所有微服务都应该接受无记名访问令牌和登录用户的身份验证/授权(中央身份验证服务),在身份验证微服务中生成的访问令牌(开放身份验证2.*)。那么,我在微服务中缺少哪些更改,其中REST AP

  • 我最大的问题是身份验证(目前)。在阅读了大量文档之后,似乎最好的解决方案是使用OpenID Connect对用户进行身份验证,以检索可以随请求一起传递给微服务的JWT。 此外,为了避免拥有多个endpoint,您可以将和API网关部署为最终用户只有一个endpoint。好了,现在我有两个关于这个体系结构的问题。 身份验证的标准流程为: 非常感谢!

  • 问题内容: 为服务器端路由验证用户的最佳方法(最安全,最简单)是什么? 软件/版本 我使用的是最新的Iron Router 1. 和Meteor 1. ,首先,我使用的是Accounts-password。 参考代码 我有一个简单的服务器端路由,可将pdf呈现到屏幕上: 两者/routes.js 举例来说,我想做些类似于该SO答案建议的操作: 在服务器上: 然后在客户端代码中: 但是,即使我以某种

  • 情况 我想为我的web应用程序使用Azure B2C身份验证服务。但是,我希望应用程序管理员限制对某些电子邮件或域的访问,例如白名单,如下所示: tom1@abc.com tom2@def.com *@alphabet.com 因此,只有前两封电子邮件和任何以“alphabet.com”结尾的电子邮件才能访问该网站。 问题 我已经实现了所有功能,并且工作正常,但是我正在努力获取经过身份验证的用户的