如何使用自定义身份验证方法配置JBoss 6

时间:2017-09-09 19:26:27

标签: java jboss5.x jboss6.x

也许我可以问你们,如果你能帮我解决如何使用自定义身份验证方法配置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

1 个答案:

答案 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();  

想想就是这样。 但我还是没有找到如何从远程独立应用程序中做同样的事情。