Можно ли использовать управляемую контейнером аутентификацию с получением пароля? - PullRequest
5 голосов
/ 11 декабря 2010

Я знаю, как настроить управляемую контейнером безопасность, которая использует аутентификацию на основе форм и использует переваренные пароли (скажем, SHA-256). Примерно так:

web.xml

<login-config>
    <auth-method>FORM</auth-method>
    <realm-name>jdbc</realm-name>
    <form-login-config>
        <form-login-page>/login.jsf</form-login-page>
        <form-error-page>/login-error.jsf</form-error-page>
    </form-login-config>
</login-config>

login.xhtml

<form action="j_security_check">
    <p><label>
        Username:<br/>
        <input type="text" name="j_username" />
    </label></p>
    <p><label>
        Password:<br/>
        <input type="password" name="j_password" />
    </label></p>
    <p>
        <button type="submit">Submit</button>
    </p>
</form>

Довольно чертовски просто - но то, что я бы действительно хотел бы иметь, - это солить пароль глобальной солью и именем пользователя. Да, я знаю, что это не идеал , но сейчас я просто создаю подтверждение концепции.

Может ли контейнер (в данном случае GlassFish 3) сделать это для меня, или мне нужно написать свой собственный фильтр входа ? Я делал это раньше (для приложений J2EE), но моя интуиция говорит мне, что теперь должен быть более жесткий способ сделать это, когда я использую Java EE 6.

1 Ответ

3 голосов
/ 17 декабря 2010

У меня такое ощущение, что вы ищете быстрый (и потенциально грязный?) Способ изменения встроенного поставщика аутентификации.

Правильный путь - внедрить свой собственный поставщик услуг аутентификации Java для нового JASPIC API ( JSR-196 ). Это более трудоемко, но этот метод позволяет вам развернуть реализацию так, как вам нравится, и он должен быть совместим с любым сервером приложений Java EE 6.

Для базовой схемы аутентификации с подстановкой паролей реализация такого провайдера должна быть довольно простой. Вам придется подумать об управлении пользователями и паролями, но одним из решений может быть предоставление вашему провайдеру возможности повторно использовать пользователей, определенных в областях аутентификации Glassfish, так что вам нужно только самостоятельно управлять пользовательскими солеными паролями.

Есть хороший учебник для WebSphere, который вы должны быть в состоянии адаптировать для Glassfish здесь .

...