AuthenticationStatus возвращает NOT_DONE при использовании пользовательской формы и хранилища идентификаций базовой базы

Я потратил несколько дней на обновление себя до Java EE 8, есть проблема, с которой я столкнулся при использовании @CustomFormAuthenticationMechanismDefinition а также @DatabaseIdentityStoreDefinition все вместе.

Я использую Glassfish v5, NetBeans 9 по ночам и Java 8.

Я просто хотел обновить пример app-mem-customform в тестовой папке security-soteria(Java EE Security 1.0 RI), и я изменил, используя @DatabaseIdentityStoreDefinition заменить память на основе манекена IdentityStore,

Когда я запускаю приложение и пытаюсь войти, я получил следующую информацию из консоли NetBeans.

Info:   Activating javax.security.enterprise.identitystore.DatabaseIdentityStoreDefinition identity store from com.hantsylabs.example.ee8.security.ApplicationConfig class
Info:   Activating javax.security.enterprise.authentication.mechanism.http.CustomFormAuthenticationMechanismDefinition authentication mechanism from com.hantsylabs.example.ee8.security.ApplicationConfig class
Warning:   RAR8705: Invalid value for property dynamic-reconfiguration-wait-timeout-in-seconds : null
Info:   initializing database...
Info:   RAR7115: Unable to set ClientInfo for connection
Info:   RAR7115: Unable to set ClientInfo for connection
Info:   RAR7115: Unable to set ClientInfo for connection
Info:   RAR7115: Unable to set ClientInfo for connection
Info:   RAR7115: Unable to set ClientInfo for connection
Info:   RAR7115: Unable to set ClientInfo for connection
Info:   RAR7115: Unable to set ClientInfo for connection
Info:   RAR7115: Unable to set ClientInfo for connection
Info:   RAR7115: Unable to set ClientInfo for connection
Info:   RAR7115: Unable to set ClientInfo for connection
Info:   RAR7115: Unable to set ClientInfo for connection
Info:   RAR7115: Unable to set ClientInfo for connection
Info:   RAR7115: Unable to set ClientInfo for connection
Info:   RAR7115: Unable to set ClientInfo for connection
Info:   RAR7115: Unable to set ClientInfo for connection
Info:   RAR7115: Unable to set ClientInfo for connection
Info:   RAR7115: Unable to set ClientInfo for connection
Info:   Initializing Soteria 1.0 for context '/security-custom-form-db'
Info:   Registering WebSocket filter for url pattern /*
Info:   Initializing Mojarra 2.3.2 ( 20170627-2139 e63598abf2ed2bb1a24674f308a734e0dce18a72) for context '/security-custom-form-db'
Info:   Monitoring jndi:/server/security-custom-form-db/WEB-INF/faces-config.xml for modifications
Info:   Loading application [_Security_1.0:_Custom_Form_Authentication_with__DatabaseIdentityStoreDefinition] at [/security-custom-form-db]
Info:   _Security_1.0:_Custom_Form_Authentication_with__DatabaseIdentityStoreDefinition was successfully deployed in 3,288 milliseconds.
Warning:   RAR8705: Invalid value for property dynamic-reconfiguration-wait-timeout-in-seconds : null
Info:   RAR7115: Unable to set ClientInfo for connection
Info:   authentication result:NOT_DONE

Информация: результат аутентификации:NOT_DONE от моего LoginBeanраспечатать возвращенное AuthenticationStatus,

Мой файл настроек безопасности:

@CustomFormAuthenticationMechanismDefinition(
        loginToContinue = @LoginToContinue(
                loginPage = "/login.faces",
                errorPage = "" // DRAFT API - must be set to empty for now
        )
)
@DatabaseIdentityStoreDefinition(
        dataSourceLookup = "${'java:global/MyDS'}",
        callerQuery = "#{'select password from caller where name = ?'}",
        groupsQuery = "select group_name from caller_groups where caller_name = ?",
        hashAlgorithm = Pbkdf2PasswordHash.class,
        priorityExpression = "#{100}",
        hashAlgorithmParameters = {
            "Pbkdf2PasswordHash.Iterations=3072",
            "${applicationConfig.dyna}"
        } // just for test / example
)
@ApplicationScoped
@Named
public class ApplicationConfig {

    public String[] getDyna() {
        return new String[]{"Pbkdf2PasswordHash.Algorithm=PBKDF2WithHmacSHA512", "Pbkdf2PasswordHash.SaltSizeBytes=64"};
    }

}

Я также включил DatabaseSetup для вставки пользователей при запуске приложения. Файл скопирован из образца app-db.

Мои полные коды можно найти здесь.

Как правильно использовать @CustomFormAuthenticationMechanismDefinition а также @DatabaseIdentityStoreDefinition плавно в проектах?

Обновление, я только что попытался использовать @FormAuthenticationMechanismDefinition а также @DatabaseIdentityStoreDefinitionработает, коды тут. Так это ошибка @CustomFormAuthenticationMechanismDefinition,

2 ответа

У меня была такая же проблема в моем приложении. Добавление.newAuthentication(true)); для аутентификации мне помогли параметры.

У меня это работает с пользовательской формой и JSF с Glassfish 6.2.5, сначала со мной случилось то же самое NOT_DONE , но потом я понял, что у меня были ошибки в операторах SQL для @DatabaseIdentityStoreDefinition. К сожалению, в этом случае он просто молча возвращает NOT_DONE , никаких подсказок в журналах Glassfish и т. д.

Может быть, что-то было исправлено с того времени.

Другие вопросы по тегам