Аутентификация формы Wildfly

0

Я пытался это проработать несколько дней. Я пытаюсь создать аутентификацию на основе формы для моего приложения JAVA EE, которое работает на wildfly. Я использую JAX-RS и AngularJS. Я создал домен безопасности wildfly следующим образом

 <security-domain name="malison">
                <authentication>
                    <login-module code="Database" flag="required">
                        <module-option name="dsJndiName" value="java:jboss/datasources/malisonDS"/>
                        <module-option name="principalsQuery" value="select password from USER where user=?"/>
                        <module-option name="rolesQuery" value="select position from USER where user=?"/>
                    </login-module>
                </authentication>
            </security-domain>

и настроил мой web.xml

 <security-constraint>
    <display-name>UnSecuredPages</display-name>

    <web-resource-collection>
        <web-resource-name>Access</web-resource-name>
        <url-pattern>/api/user/*</url-pattern>
    </web-resource-collection>        
    <web-resource-collection>
        <web-resource-name>Access</web-resource-name>
        <url-pattern>/user.jsp</url-pattern>
    </web-resource-collection>

    <web-resource-collection>
        <web-resource-name>Access</web-resource-name>
        <url-pattern>/assets/*</url-pattern>
    </web-resource-collection>
</security-constraint>

<security-role>
    <role-name>ADMIN</role-name>
</security-role>

Теперь у меня проблема с написанием кода для моей функции аутентификации. Который должен отправить успешный ответ клиенту. Я думал, это сработает.

    @POST
@Path("/authenticate")
@Consumes(MediaType.APPLICATION_JSON)
public String authenticate(@Context HttpServletRequest request, JSONObject obj){

    String userName = String.valueOf(obj.get("username"));
    String password = String.valueOf(obj.get("password"));
    try{
        request.login(userName, password);
    }
    catch(Exception e){
        e.printStackTrace();
    }
    return "{\"success\":true, \"msg\": \"Saved successfully\"}";
}

Может кто-нибудь дать решение или поработать, я был бы благодарен...

Теги:
authentication
jax-rs
wildfly-8

1 ответ

0

Вы должны сообщить Wildfly, какой домен безопасности это приложение использует для аутентификации. Добавьте jboss-web.xml в WEB-INF:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE jboss-web PUBLIC "-//JBoss//DTD Web Application 5.0//EN" "http://www.jboss.org/j2ee/dtd/jboss-web_5_0.dtd">
<jboss-web>
    <security-domain>java:/jaas/malison</security-domain>
</jboss-web>

Кроме того, вам может потребоваться добавить конфигурацию входа в web.xml. Вот пример базовой проверки подлинности HTML:

<login-config>
    <auth-method>BASIC</auth-method>
</login-config>

Подробнее здесь: https://dzone.com/articles/understanding-web-security

Обратите внимание, однако, что вы не выполняете аутентификацию по форме, как это определяет web.xml. Вы напрямую вызываете метод входа в HTTP-запрос, в то время как при аутентификации формы, настроенной в web.xml, сервер приложений автоматически перенаправляется на страницу входа и обратно на защищенный URL-адрес после успешной аутентификации.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню