我正在尝试在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>
但单点登录仍无效。我必须分别登录每个应用程序。请帮帮我。
答案 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-method
中security-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>