#authentication #spring-security
#аутентификация #spring-безопасность
Вопрос:
Я пытаюсь изменить токен аутентификации в сеансе.
Scenerio — это;
Анонимный пользователь попадает на главную страницу и AnonymousAuthenticationToken
сохраняется в сеансе с ROLE_ANONYMOUS
предоставленными полномочиями.. Но когда он / она хочет создать элемент, приложение заставляет его / ее войти в систему.После того, как он войдет в систему со своей учетной записью OpenID, я создаю учетную запись, OpenIDAuthenticationToken
с ROLE_USER
предоставленными полномочиями, и заменяю на нее сохраненный токен. Он / она может получить доступ с ROLE_USER
в любое разрешенное место.
Когда он хочет выйти из системы, я удаляю токен из контекста, и все в порядке.
НО;
Когда он / она снова входит в систему, я могу заметить, что токены заменяются в контексте, он / она не может получить доступ к ROLE_USER
разрешенным разделам.
Журналы перед входом в систему;
Current authentication is org.springframework.security.authentication.AnonymousAuthenticationToken@6fabe8e0: Principal: anonymousUser; Credentials: [PROTECTED]; Authenticated: true; Details: org.springframework.security.web.authentication.WebAuthenticationDetails@fffe9938: RemoteIpAddress: 0:0:0:0:0:0:0:1; SessionId: B1F6870C9FF93DCB50A6FD71302A9090; Granted Authorities: ROLE_ANONYMOUS
Журналы после входа в систему;
After refreshing authentication: [org.springframework.security.openid.OpenIDAuthenticationToken@c9e3a81c: Principal: Hugo Weaving; Credentials: [PROTECTED]; Authenticated: true; Details: org.springframework.security.web.authentication.WebAuthenticationDetails@fffe9938: RemoteIpAddress: 0:0:0:0:0:0:0:1; SessionId: B1F6870C9FF93DCB50A6FD71302A9090; Granted Authorities: ROLE_USER, attributes : null]
На данный момент я не назначал атрибуты open id, но я не думаю, что это проблема.
Вот мой web.xml
<filter>
<filter-name>springSecurityFilterChain</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<filter-mapping>
<filter-name>springSecurityFilterChain</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/security-context.xml
</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
И вот мой security.xml
<http auto-config="true">
<intercept-url pattern="/first.jsp" access="ROLE_USER" />
<intercept-url pattern="/second.jsp" access="ROLE_USER" />
<openid-login login-page="/index.html"></openid-login>
</http>
** В основном я заставляю клиентов, которые хотят получить доступ к first.jsp
и second.jsp
, входить в систему со своими учетными записями open id.
Комментарии:
1. Наконец-то я решил это. Эта проблема была не в токенах аутентификации, а в моем рабочем процессе. Изменил одну строку кода, и это сделано.
2. какую строку вы прокомментировали?
Ответ №1:
Наконец-то я решил это. Эта проблема была не в токенах аутентификации, а в моем рабочем процессе. Изменил одну строку кода, и это сделано.