Проверка подлинности Spring Security, NULL-AUTH-USER в журнале доступа GlassFish
Я занимаюсь разработкой веб-приложения на GlassFish 4 с использованием Spring Web MVC 4 и Spring Security.
Я настроил аутентификацию на основе форм с провайдером JDBC с помощью XML-конфигурации Spring:
<jee:jndi-lookup id="appDataSource" jndi-name="jdbc/appDbPool" expected-type="javax.sql.DataSource" />
<http use-expressions="true">
<form-login login-page="/login.html" default-target-url="/" />
<logout logout-url="/logout" logout-success-url="/" />
</http>
<authentication-manager>
<authentication-provider>
<password-encoder hash="md5"/>
<jdbc-user-service data-source-ref="appDataSource"
users-by-username-query="SELECT user_login_name, user_password_hash, 1 FROM user_accounts WHERE user_login_name = ?"
authorities-by-username-query="SELECT ... WHERE user_login_name = ?"
/>
</authentication-provider>
</authentication-manager>
Я включил ведение журнала доступа в конфигурации HTTP-службы GlassFish, используя строку формата по умолчанию:
%client.name% %auth-user-name% %datetime% %request% %status% %response.length%
Прежде чем пользователь вошел в систему, я вижу "NULL-AUTH-USER" в поле%auth-user-name% журнала доступа. После успешного входа пользователя я ожидаю, что Spring Security создаст объект сеанса стандартного сервера Java EE, и имя пользователя будет отображаться в журнале доступа. Но журнал показывает тот же "NULL-AUTH-USER".
Вот цитата из моего журнала:
"0:0:0:0:0:0:0:1" "NULL-AUTH-USER" "21/Jun/2018:10:31:10 +0500" "GET /appweb/main.html HTTP/1.1" 200 24923
(здесь пользователь переходит на страницу "/appweb/profile", на которой пользователь должен войти в систему)
"0:0:0:0:0:0:0:1" "NULL-AUTH-USER" "21/Jun/2018:10:31:20 +0500" "GET /appweb/login.html HTTP/1.1" 200 5471
"0:0:0:0:0:0:0:1" "NULL-AUTH-USER" "21/Jun/2018:10:31:25 +0500" "POST /ectrweb/login HTTP/1.1" 302 181
(пользователь успешно залогинился и перешел на страницу своего профиля)
"0:0:0:0:0:0:0:1" "NULL-AUTH-USER" "21/Jun/2018:10:31:25 +0500" "GET /appweb/profile HTTP/1.1" 200 20202
Что мне нужно сделать, чтобы правильно отображать имя пользователя для входа в систему с помощью Spring Security?
(В моем другом приложении я использую безопасность JSF и GlassFish с областью JDBC вместо сред Spring. В журнале доступа отображается зарегистрированное имя пользователя правильно:
"127.0.0.1" "NULL-AUTH-USER" "21/Jun/2018:11:32:17 +0500" "GET /index.xhtml HTTP/1.1" 200 26964
"127.0.0.1" "NULL-AUTH-USER" "21/Jun/2018:11:32:47 +0500" "GET /app/summary.xhtml HTTP/1.1" 200 3767
"127.0.0.1" "NULL-AUTH-USER" "21/Jun/2018:11:33:29 +0500" "POST /app/j_security_check HTTP/1.1" 302 193
"127.0.0.1" "g66" "21/Jun/2018:11:33:29 +0500" "GET /app/summary.xhtml HTTP/1.1" 200 16928
)