Изменение предоставленной роли аутентифицированного пользователя и токена аутентификации в spring-безопасность

#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:

Наконец-то я решил это. Эта проблема была не в токенах аутентификации, а в моем рабочем процессе. Изменил одну строку кода, и это сделано.