单点登录不在Jboss上工作

时间:2015-07-28 04:41:32

标签: java security authentication jboss

我正在尝试在Jboss服务器上进行单点登录。我用下面的方法修改了standalone.xml文件。

    <subsystem xmlns="urn:jboss:domain:web:1.1" default-virtual-server="default-host" native="false">
            <connector name="http" protocol="HTTP/1.1" scheme="http" socket-binding="http"/>
            <virtual-server name="default-host" enable-welcome-root="true">
                <alias name="localhost"/>
                <sso domain="localhost" reauthenticate="false"/>
            </virtual-server>

<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="RealmUsersRoles" flag="required">
<module-option name="usersProperties" value="${jboss.server.config.dir}/application-users.properties"/>
<module-option name="rolesProperties" value="${jboss.server.config.dir}/application-roles.properties"/>
<module-option name="realm" value="ApplicationRealm"/>
<module-option name="password-stacking" value="useFirstPass"/>
      </login-module>
     </authentication>
</security-domain>

我修改了我的jboss-web.xml,如下所示

    <jboss-web>
    <security-domain>java:/jaas/other </security-domain>
          <valve>
        <class-name>org.apache.catalina.authenticator.SingleSignOn</class-name>
    </valve>
</jboss-web>

我的web.xml如下所示。

    <servlet>
<servlet-name>secret</servlet-name>
<servlet-class>com.tomcat.demo.SalaryServer</servlet-class>
</servlet>
<servlet-mapping>
        <servlet-name>secret</servlet-name>
        <url-pattern>/test</url-pattern>
    </servlet-mapping>
<security-constraint>
    <web-resource-collection>
        <web-resource-name>SecretProtection</web-resource-name>
        <url-pattern>/servlet/SalaryServer</url-pattern>
        <url-pattern>/servlet/secret</url-pattern>
        <url-pattern>/test</url-pattern>
        <http-method>GET</http-method>
        <http-method>POST</http-method>
    </web-resource-collection>
<auth-constraint>
<role-name>admin</role-name>
</auth-constraint>
</security-constraint>
<login-config>
<auth-method>
FORM
<!-- BASIC, DIGEST, FORM, CLIENT-CERT  -->
</auth-method>
<form-login-config>
<!--  only useful for FORM  -->
<form-login-page>/loginpage.html</form-login-page>
<form-error-page>/errorpage.html</form-error-page>
</form-login-config>
</login-config>
<security-role>
<role-name>admin</role-name>
</security-role>
</web-app>

但单点登录仍无效。我必须分别登录每个应用程序。请帮帮我。

1 个答案:

答案 0 :(得分:2)

在AS7中启用SSO非常简单。只需使用此JBoss CLI命令:

/subsystem=web/virtual-server=default-host/sso=configuration:add(reauthenticate="false")

它导致virtual-server子系统下的web元素中的以下行:

<sso reauthenticate="false"/>

从部署中删除jboss-web.xml - 您也不需要它。阀门条目完全错误(sso中的standalone.xml部分替换它) - 它仅在旧的JBoss AS中有效(例如5)。 other安全域是默认域 - 无需在部署配置中指定它。

还有一件事,请移除http-methodsecurity-contraints部分的web.xml元素。否则,所有其他HTTP方法将不受保护

正确的形式是:

<web-resource-collection>
    <web-resource-name>SecretProtection</web-resource-name>
    <url-pattern>/servlet/SalaryServer</url-pattern>
    <url-pattern>/servlet/secret</url-pattern>
    <url-pattern>/test</url-pattern>
</web-resource-collection>