【问题标题】:jboss EAP 6.3.3 fallback authenticationjboss EAP 6.3.3 后备认证
【发布时间】:2015-05-27 02:27:03
【问题描述】:

我有一个要部署的应用程序需要 SSO 才能处理 AD。这适用于以下 sn-ps:

jboss-web.xml

<security-domain>java:/jaas/SPNEGO</security-domain>
<valve>
  <class-name>org.jboss.security.negotiation.NegotiationAuthenticator</class-name>
</valve>

jboss-deployment-structure.xml

<dependencies>
  <module name="javax.api" slot="main"/>
  <module name="org.jboss.security.negotiation" />
  <module name="sun.jdk" slot="main"/>
</dependencies>

域.xml

<subsystem xmlns="urn:jboss:domain:security:1.2">
  <security-domains>
    <security-domain name="other" cache-type="default">
      <authentication>
        <login-module code="Remoting" flag="optional">
          <module-option name="password-stacking" value="useFirstPass"/>
        </login-module>
        <login-module code="RealmDirect" flag="required">
          <module-option name="password-stacking" value="useFirstPass"/>
        </login-module>
      </authentication>
    </security-domain>
    <security-domain name="jboss-web-policy" cache-type="default">
      <authorization>
        <policy-module code="Delegating" flag="required"/>
      </authorization>
    </security-domain>
    <security-domain name="host" cache-type="default">
      <authentication>
        <login-module code="Kerberos" flag="optional">
          <module-option name="storeKey" value="true"/>
          <module-option name="useKeyTab" value="true"/>
          <module-option name="principal" value="HTTP/spn.xx.xx@xx.xx"/>
          <module-option name="keyTab" value="/xx/xx/xx.keytab"/>
          <module-option name="doNotPrompt" value="true"/>
          <module-option name="debug" value="true"/>
        </login-module>
      </authentication>
    </security-domain>
    <security-domain name="SPNEGO" cache-type="default">
      <authentication>
        <login-module code="SPNEGO" flag="requisite">
          <module-option name="password-stacking" value="useFirstPass"/>
          <module-option name="serverSecurityDomain" value="host"/>
          <module-option name="removeRealmFromPrincipal" value="true"/>
        </login-module>
        <login-module code="org.jboss.security.auth.spi.LdapExtLoginModule" flag="sufficient">
          <module-option name="password-stacking" value="useFirstPass"/>
          <module-option name="java.naming.factory.initial" value="com.sun.jndi.ldap.LdapCtxFactory"/>
          <module-option name="java.naming.provider.url" value="ldap://xx.xx.xx:389"/>
          <module-option name="bindDN" value="cn=xx,ou=xx,ou=xx,dc=xx,dc=xx"/>
          <module-option name="bindCredential" value="xxencryptmexx"/>
          <module-option name="baseCtxDN" value="ou=xx,ou=xx,dc=xx,dc=xx"/>
          <module-option name="baseFilter" value="(&amp;(samaccountname={0})(objectclass=user))"/>
          <module-option name="searchScope" value="ONELEVEL_SCOPE"/>
          <module-option name="allowEmptyPasswords" value="false"/>
          <module-option name="throwValidateError" value="true"/>
          <module-option name="rolesCtxDN" value="ou=xx,ou=xx,dc=xx,dc=xx"/>
          <module-option name="roleFilter" value="(member={1})"/>
          <module-option name="roleAttributeID" value="cn"/>
          <module-option name="roleAttributeIsDN" value="false"/>
          <module-option name="roleRecursion" value="2"/>
          <module-option name="java.naming.referral" value="follow"/>
        </login-module>
      </authentication>
    </security-domain>
  </security-domains>
</subsystem>

我想在不更改 jboss-web.xml 和 jboss-deployment-structure.xml 的情况下将相同的应用程序部署到具有不同配置文件的另一台服务器,以进行后备身份验证以使用 databaseserverlogin 模块。然后其他人将使用此应用程序对其进行 RPC 调用(无 SSO)。我尝试在下面堆叠登录模块:

<login-module code="org.jboss.security.auth.spi.DatabaseServerLoginModule" flag="required">
  <module-option name="dsJndiName" value="java:/MyDatabaseDS"/>
  <module-option name="principalsQuery" value="select passwd from Users where username=?"/>
  <module-option name="rolesQuery" value="select userRoles, 'Roles' from UserRoles where username=?"/>
  <module-option name="ignorePasswordCase" value="true"/>
</login-module>

我在运行 wget 命令时遇到的错误(希望它会回退到 databaseserverlogin 模块)

HTTP request sent, awaiting response... 401 Unauthorized
Unknown authentication scheme.
Authorization failed.

我自己可以成功使用 databaseserverlogin 模块,但必须去掉 jboss-web.xml 中的 valve 条目。

这种设置可行吗?我试图避免修改从开发中收到的 WAR 文件。

我尝试了以下link 但卡在找不到类 org.jboss.security.negotiation.NegotiationWithBasicFallbackAuthenticator 上?我以为补丁会包含在最新的 jboss EAP 6.3.3 中?可能是一个错误的假设。

提前感谢您的任何指导(如果我没有意义,请耐心等待)。

【问题讨论】:

    标签: jboss spnego


    【解决方案1】:

    在 RedHat 支持的帮助下排序。

    •要启用回退到基本功能,请将以下内容添加到 WEB-INF/web.xml 文件的顶部:

    <context-param>
      <description>BASIC Authentication FallBack</description>
      <param-name>org.jboss.security.negotiation.NegotiationAuthenticator.BasicAuthFallBack</param-name>
      <param-value>true</param-value>
    </context-param>
    

    如果您有 RedHat 支持,请在此处链接到新创建的知识库解决方案 https://access.redhat.com/solutions/1488173

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-29
      • 2016-05-15
      • 1970-01-01
      • 1970-01-01
      • 2015-01-01
      相关资源
      最近更新 更多