也许我可以问你们,如果你能帮我解决如何使用自定义身份验证方法配置JBoss 6的问题吗? 我们正在从JBoss 5迁移到JBoss 6。 在5中,我们得到了一个带有此登录标记的web.xml
<login-config>
<auth-method>OURSSO</auth-method>
<realm-name>oursso</realm-name>
</login-config>
和jboss-app.xml
<security-domain>oursso</security-domain>
在login-config.xml
中<application-policy name="oursso">
<authentication>
<login-module code="org.jboss.security.auth.spi.UsersRolesLoginModule" flag="sufficient">
<module-option name="usersProperties">props/mycomp-users.properties</module-option>
<module-option name="rolesProperties">props/mycomp-roles.properties</module-option>
<module-option name="unauthenticatedIdentity">anonymous</module-option>
</login-module>
<login-module code="rsa.ps.ct.jboss.jaas.OURSSOServerLoginModule" flag="required">
<module-option name="connectionProvider">rsa.access.manager:type=Service,name=RuntimeAPIClient</module-option>
</login-module>
<login-module code="org.jboss.security.auth.spi.RoleMappingLoginModule" flag="optional">
<module-option name="rolesProperties">props/mycomp-rolemapping-roles.properties</module-option>
<module-option name="replaceRole">true</module-option>
</login-module>
</authentication>
</application-policy>
在war-deployers-jboss-beans.xml
中<property name="authenticators">
<map class="java.util.Properties" keyClass="java.lang.String" valueClass="java.lang.String">
<entry>
<key>BASIC</key>
<value>org.apache.catalina.authenticator.BasicAuthenticator</value>
</entry>
...
<entry>
<key>OURSSO</key>
<value>com.mycomp.OurssoAuthenticator</value>
</entry>
</map>
</property>
似乎web.xml中的auth方法必须与war-deployers-jboss-beans.xml中的键匹配。如何在JBoss 6中完成相同的工作?
祝你好运
的Fredrik
答案 0 :(得分:0)
我将这些添加到我的standalone-full.xml
<security-domain name="my-security-domain" cache-type="default">
<authentication>
<login-module code="org.jboss.security.auth.spi.UsersRolesLoginModule" flag="required">
<module-option name="usersProperties" value="file://${jboss.server.config.dir}/users.properties"/>
<module-option name="rolesProperties" value="file://${jboss.server.config.dir}/roles.properties"/>
</login-module>
</authentication>
</security-domain>
在users.properties文件中
123=qwe
456=asd
在文件roles.properties
中123=role.A,role.B
456=role.B
在我服务器中的一个bean中,我用
注释它@Stateless
@SecurityDomain("my-security-domain")
@RolesAllowed("role.A")
public class SecureStatelessBean extends SecureReturnAString implements SecureStatelessBeanLocal, SecureStatelessBeanRemote
{
...
在我的网络应用程序(在同一服务器上运行)中,我查找bean并使用此代码登录
@EJB(lookup = "java:global/ejbtest-app/ejbtest-server-0.0.1-SNAPSHOT/SecureStatelessBean!se.albinoni.ejbtest.stateless.SecureStatelessBeanRemote")
private SecureStatelessBeanRemote secureStatelessBeanRemote;
...
private static SecurityClient getClientLogin() throws Exception
{
final SecurityClient client = SecurityClientFactory.getSecurityClient();
client.setSimple("123", "qwe");
return client;
}
...
SecurityClient client = getClientLogin();
client.login();
secureStatelessBeanRemote.someMethod();
想想就是这样。 但我还是没有找到如何从远程独立应用程序中做同样的事情。