Java 单点登录在Jboss上不起作用

Java 单点登录在Jboss上不起作用,java,security,authentication,jboss,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"/

我正在尝试在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>
    <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>


我修改了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>

java:/jaas/other
org.apache.catalina.authenticator.SingleSignOn
我的web.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>
    <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>

秘密
com.tomcat.demo.SalaryServer
秘密
/试验
秘密保护
/servlet/SalaryServer
/servlet/secret
/试验
得到
邮递
管理
形式
/loginpage.html
/errorpage.html
管理

但单一登录仍然不起作用。我必须分别登录每个应用程序。请帮助我。

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

/subsystem=web/virtual-server=default-host/sso=configuration:add(reauthenticate="false")
它在
web
子系统下的
virtualserver
元素中生成以下行:


从您的部署中删除
jboss web.xml
——您不需要它。阀门入口完全是错误的(用
standalone.xml
中的
sso
部分代替了它)——它只在旧的JBossAS中有效(例如5)。
other
安全域是默认域-无需在部署配置中指定它

还有一件事,从
web.xml
中的
安全约束
部分删除
http方法
元素。否则,所有其他HTTP方法将不会受到保护

正确的形式是:


秘密保护
/servlet/SalaryServer
/servlet/secret
/试验