WildFly

时间:2015-06-05 12:59:30

标签: java java-ee jboss wildfly sasl

我使用JBoss WildFly,Jax-Rs 2.0和EJB 3.0。

我正在尝试通过在我的服务中调用login方法来实现身份验证。

@POST
@PermitAll
public Response login(AuthLoginElement al) {
    try {
        httpRequest.login(al.getUsername(), al.getPassword());
        return Response.status(Response.Status.OK).build();
    } catch (ServletException e) {
        return Response.status(Response.Status.UNAUTHORIZED)
                .entity(e.getMessage())
                .build();
    }
}

我的EJB也适用于WildFLy文档。

@Stateless
@RolesAllowed({ "guest", "admin" })
@SecurityDomain("test-policy")
public class SecuredEJB {

public String getSecurityInfo() {
    // Session context injected using the resource annotation
    Principal principal = ctx.getCallerPrincipal();

    return principal.getName();
}

在我的standalone.xml我定义了安全域:

            <security-domain name="test-policy" cache-type="default">
                <authentication>
                    <login-module code="Database" flag="required">
                        <module-option name="dsJndiName" value="java:jboss/datasources/SecurityDS"/>
                        <module-option name="principalsQuery" value="select password from  PRINCIPLES where principal_id=?"/>
                        <module-option name="rolesQuery" value="select user_role, 'Roles' from  ROLES where  principal_id=?"/>
                        <module-option name="unauthenticatedIdentity" value="guest"/>
                    </login-module>
                </authentication>
            </security-domain>

然而,在调用httpRequest.login()之后,返回200,但没有任何反应,安全日志被清除,用户未经过身份验证。你能帮助我或建议另一种认证方式吗?

0 个答案:

没有答案