У меня есть ситуация, когда основное приложение обслуживается на главной конечной точке (/ **).Я использую Spring Security для аутентификации пользователя перед обслуживанием любых других ресурсов.Аутентификация выполняется с помощью формы для входа.
Но, в частности, конечная точка (/ lti / **) используется в другом разделе Http.Там Spring Security обрабатывает аутентификацию, используя OAuth.
После аутентификации на конечной точке / lti / ** пользователь должен загрузить все мое приложение в iFrame.Это означает доступ ко всем ресурсам, защищенным 1-м Http-разделом.
Теперь проблема в том, что даже если пользователь прошел аутентификацию с помощью кредитов OAuth для загрузки приложения из / lti / **, и я установил всех соответствующих пользователейролей, когда приложение загружается в iFrame и пытается получить доступ к любым ресурсам, оно перенаправляется на экран входа в систему, как указано в первом разделе Http (последующие вызовы через AJAX, если это помогает, но вы можете увидеть ответ в devинструменты).
Основываясь на моих исследованиях, контекст безопасности не распределяется между разными точками входа.Различные брандмауэры создаются, поэтому сам контекст безопасности повторно инициируется.
Вот немного моего контекста безопасности:
<security:http pattern="/lti/**" use-expressions="true" entry-point-ref="oAuthProcessingFilterEntryPoint">
<security:headers>
<security:frame-options disabled="true"/>
</security:headers>
<security:intercept-url pattern="/**" access="hasRole('ROLE_OAUTH')"/>
<!-- Filter -->
<security:custom-filter ref="oAuthProcessingFilter" before="ANONYMOUS_FILTER"/>
<!-- Disable CSRF -->
<security:csrf disabled="true"/>
</security:http>
<security:http>
<security:intercept-url ... />
....
<security:form-login
authentication-success-handler-ref="authenticationSuccessHandler"
login-page=............"/>
<security:logout ................./>
<security:session-management invalid-session-url="............." session-authentication-error-url="................">
</security:session-management>
<!-- Enable csrf protection -->
<security:csrf/>
</security:http>
Любой подход, который будет работать или есть какие-либо идеи, как я могу решитьситуация?