简体   繁体   English

Wildfly(12/14)Elytron-LDAP安全性-缺少依赖项

[英]Wildfly (12/14) Elytron - LDAP Security - Missing Dependecies

I'm struggling to introduce Wildfly 12/14 Elytron Ldap authentication mechanism into my two webapps applications. 我正在努力将Wildfly 12/14 Elytron Ldap身份验证机制引入我的两个webapp应用程序中。

Although I've successfully deployed the DirContext, LdapRealm, SecurityDomain etc following the steps inside the Wildfly docs via jboss-cli.sh, when I add the tag <security-domain> within "WEB-INF/jboss-web.xml", and start the container, I'm getting the following ERROR: 尽管我已经通过jboss-cli.sh按照Wildfly文档中的步骤成功部署了DirContext,LdapRealm,SecurityDomain等,但是当我在“ WEB-INF / jboss-web.xml”中添加标记<security-domain> ,并启动容器,出现以下错误:

  "WFLYCTL0412: Required services that are not installed:" => ["jboss.security.security-domain.myApplicationDomain"], "WFLYCTL0180: Services with missing/unavailable dependencies" => ["jboss.deployment.unit.\\"ldapauthentication.war\\".component.MemberRegistration.CREATE is missing [jboss.security.security-domain.myApplicationDomain]"] 

Note: Even setting "standalone.xml" logging level to TRACE, the only info regarding this is the above lines. 注意:即使将“ standalone.xml”日志记录级别设置为TRACE,关于此的唯一信息也是上述行。

The jboss-cli.sh sequency commands used to implement the Elytron Security subsystem were: 用于实现Elytron安全子系统的jboss-cli.sh顺序命令是:

/subsystem=elytron/dir-context=exampleDC:add(url="ldap://172.17.0.2:389",principal="cn=admin,dc=wildfly,dc=org",credential-reference={clear-text="secret"})
/subsystem=elytron/ldap-realm=exampleLR:add(dir-context=exampleDC,identity-mapping={search-base-dn="ou=Users,dc=wildfly,dc=org",rdn-identifier="uid",user-password-mapper={from="userPassword"},attribute-mapping=[{filter-base-dn="ou=Roles,dc=wildfly,dc=org",filter="(&(objectClass=groupOfNames)(member={1}))",from="cn",to="Roles"}]})
/subsystem=elytron/simple-role-decoder=from-roles-attribute:add(attribute=Roles)
/subsystem=elytron/security-domain=exampleLdapSD:add(realms=[{realm=exampleLR,role-decoder=from-roles-attribute}],default-realm=exampleLR,permission-mapper=default-permission-mapper)
/subsystem=elytron/http-authentication-factory=example-ldap-http-auth:add(http-server-mechanism-factory=global,security-domain=exampleLdapSD,mechanism-configurations=[{mechanism-name=BASIC,mechanism-realm-configurations=[{realm-name=myApplicationDomain}]}])
/subsystem=undertow/application-security-domain=myApplicationDomain:add(http-authentication-factory=example-ldap-http-auth)

Both jboss-web.xml and web.xml files were defined as follow: jboss-web.xmlweb.xml文件的定义如下:

jboss-web.xml: 的jboss-web.xml中:

<?xml version="1.0" encoding="UTF-8"?>
<jboss-web xmlns="http://www.jboss.com/xml/ns/javaee"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://www.jboss.com/xml/ns/javaee
  http://www.jboss.org/j2ee/schema/jboss-web_5_1.xsd">

    <security-domain>myApplicationDomain</security-domain>

</jboss-web>

web.xml: web.xml中:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee"
    xmlns:web="http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
    version="3.1" xmlns="http://xmlns.jcp.org/xml/ns/javaee">

    <display-name>ldapauth</display-name>

    <security-constraint>
        <web-resource-collection>
            <web-resource-name>secure</web-resource-name>
            <url-pattern>/*</url-pattern>
        </web-resource-collection>
        <auth-constraint>
            <role-name>Admin</role-name>
        </auth-constraint>
    </security-constraint>

    <security-role>
        <description>Ldap Secured</description>
        <role-name>Admin</role-name>
    </security-role>

    <login-config>
        <auth-method>BASIC</auth-method>
        <realm-name>myApplicationDomain</realm-name>
    </login-config>

    <session-config>
        <session-timeout>8</session-timeout>
    </session-config>

    <welcome-file-list>
        <welcome-file>/index.html</welcome-file>
    </welcome-file-list>
</web-app>

What am I missing? 我想念什么?

component.MemberRegistration.CREATE (ejb?) is using legacy security domain jboss.security.security-domain.myApplicationDomain. component.MemberRegistration.CREATE(ejb?)使用旧版安全域jboss.security.security-domain.myApplicationDomain。

You should use define application security domain in ejb subsystem (similar as you do for undertow) to know Elytron domain should be used. 您应该在ejb子系统中使用define application security domain(定义应用程序安全域)(类似于您对undertow所做的事情),以了解应该使用Elytron域。

/subsystem=ejb3/application-security-domain=myApplicationDomain:add(security-domain=exampleLdapSD) /子系统= EJB3 /应用的安全域= myApplicationDomain:添加(安全域= exampleLdapSD)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM