Saml2.SubjectConfirmation.ValidInResponseTo=null — SpringBoot saml — поток, инициированный IDP — только 1 запросJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Saml2.SubjectConfirmation.ValidInResponseTo=null — SpringBoot saml — поток, инициированный IDP — только 1 запрос

Сообщение Anonymous »

У меня есть приложение Springboot, использующее Saml, и когда пользователь выполняет запрос, инициированный IDP, возникает проблема, из-за которой пользователи получают:

Код: Выделить всё

org.springframework.security.saml2.provider.service.authentication.Saml2AuthenticationException:  T h e   r e s p o n s e   c o n t a i n e d   a n   I n R e s p o n s e T o   a t t r i b u t e   [ A R Q 3 0 3 1 3 9 7 - 8 5 f a - 4 7 a 6 - a e 3 f - 6 4 7 6 c 3 2 0 5 b e d ]   b u t   n o   s a v e d   a u t h e n t i c a t i o n   r e q u e s t   w a s   f o u n d < b r   / >         a t   o r g . s p r i n g f r a m e w o r k . s e c u r i t y . s a m l 2 . p r o v i d e r . s e r v i c e . a u t h e n t i c a t i o n . O p e n S a m l 4 A u t h e n t i c a t i o n P r o v i d e r . c r e a t e A u t h e n t i c a t i o n E x c e p t i o n ( O p e n S a m l 4 A u t h e n t i c a t i o n P r o v i d e r . j a v a : 7 4 4 ) < b r   / >         a t   o r g . s p r i n g f r a m e w o r k . s e c u r i t y . s a m l 2 . p r o v i d e r . s e r v i c e . a u t h e n t i c a t i o n . O p e n S a m l 4 A u t h e n t i c a t i o n P r o v i d e r . p r o c e s s ( O p e n S a m l 4 A u t h e n t i c a t i o n P r o v i d e r . j a v a : 6 2 6 ) < b r   / >         a t   o r g . s p r i n g f r a m e w o r k . s e c u r i t y . s a m l 2 . p r o v i d e r . s e r v i c e . a u t h e n t i c a t i o n . O p e n S a m l 4 A u t h e n t i c a t i o n P r o v i d e r . a u t h e n t i c a t e ( O p e n S a m l 4 A u t h e n t i c a t i o n P r o v i d e r . j a v a : 5 4 5 ) < b r   / >         a t   o r g . s p r i n g f r a m e w o r k . s e c u r i t y . a u t h e n t i c a t i o n . P r o v i d e r M a n a g e r . a u t h e n t i c a t e ( P r o v i d e r M a n a g e r . j a v a : 1 8 2 ) < b r   / >         a t   o r g . s p r i n g f r a m e w o r k . s e c u r i t y . s a m l 2 . p r o v i d e r . s e r v i c e . w e b . a u t h e n t i c a t i o n . S a m l 2 W e b S s o A u t h e n t i c a t i o n F i l t e r . a t t e m p t A u t h e n t i c a t i o n ( S a m l 2 W e b S s o A u t h e n t i c a t i o n F i l t e r . j a v a : 1 3 1 ) < b r   / >         a t   o r g . s p r i n g f r a m e w o r k . s e c u r i t y . w e b . a u t h e n t i c a t i o n . A b s t r a c t A u t h e n t i c a t i o n P r o c e s s i n g F i l t e r . d o F i l t e r ( A b s t r a c t A u t h e n t i c a t i o n P r o c e s s i n g F i l t e r . j a v a : 2 3 1 ) < b r   / >         a t   o r g . s p r i n g f r a m e w o r k . s e c u r i t y . w e b . a u t h e n t i c a t i o n . A b s t r a c t A u t h e n t i c a t i o n P r o c e s s i n g F i l t e r . d o F i l t e r ( A b s t r a c t A u t h e n t i c a t i o n P r o c e s s i n g F i l t e r . j a v a : 2 2 1 ) < b r   / >         a t   o r g . s p r i n g f r a m e w o r k . s e c u r i t y . w e b . F i l t e r C h a i n P r o x y $ V i r t u a l F i l t e r C h a i n . d o F i l t e r ( F i l t e r C h a i n P r o x y . j a v a : 3 7 4 ) < b r   / >         a t   o r g . s p r i n g f r a m e w o r k . s e c u r i t y . s a m l 2 . p r o v i d e r . s e r v i c e . w e b . S a m l 2 M e t a d a t a F i l t e r . d o F i l t e r I n t e r n a l ( S a m l 2 M e t a d a t a F i l t e r . j a v a : 9 8 ) < b r   / >         a t   o r g . s p r i n g f r a m e w o r k . w e b . f i l t e r . O n c e P e r R e q u e s t F i l t e r . d o F i l t e r ( O n c e P e r R e q u e s t F i l t e r . j a v a : 1 1 6 ) < b r   / >         a t   o r g . s p r i n g f r a m e w o r k . s e c u r i t y . w e b . F i l t e r C h a i n P r o x y $ V i r t u a l F i l t e r C h a i n . d o F i l t e r ( F i l t e r C h a i n P r o x y . j a v a : 3 7 4 ) < b r   / >         a t   o r g . s p r i n g f r a m e w o r k . s e c u r i t y . s a m l 2 . p r o v i d e r . s e r v i c e . w e b . S a m l 2 W e b S s o A u t h e n t i c a t i o n R e q u e s t F i l t e r . d o F i l t e r I n t e r n a l ( S a m l 2 W e b S s o A u t h e n t i c a t i o n R e q u e s t F i l t e r . j a v a : 1 0 0 ) < b r   / >         a t   o r g . s p r i n g f r a m e w o r k . w e b . f i l t e r . O n c e P e r R e q u e s t F i l t e r . d o F i l t e r ( O n c e P e r R e q u e s t F i l t e r . j a v a : 1 1 6 ) < b r   / >         a t   o r g . s p r i n g f r a m e w o r k . s e c u r i t y . w e b . F i l t e r C h a i n P r o x y $ V i r t u a l F i l t e r C h a i n . d o F i l t e r ( F i l t e r C h a i n P r o x y . j a v a : 3 7 4 ) < b r   / >         a t   o r g . s p r i n g f r a m e w o r k . s e c u r i t y . w e b . a u t h e n t i c a t i o n . l o g o u t . L o g o u t F i l t e r . d o F i l t e r ( L o g o u t F i l t e r . j a v a : 1 0 7 ) < b r   / >         a t   o r g . s p r i n g f r a m e w o r k . s e c u r i t y . w e b . a u t h e n t i c a t i o n . l o g o u t . L o g o u t F i l t e r . d o F i l t e r ( L o g o u t F i l t e r . j a v a : 9 3 ) < b r   / >         a t   o r g . s p r i n g f r a m e w o r k . s e c u r i t y . w e b . F i l t e r C h a i n P r o x y $ V i r t u a l F i l t e r C h a i n . d o F i l t e r ( F i l t e r C h a i n P r o x y . j a v a : 3 7 4 ) < b r   / >         a t   o r g . s p r i n g f r a m e w o r k . s e c u r i t y . w e b . h e a d e r . H e a d e r W r i t e r F i l t e r . d o H e a d e r s A f t e r ( H e a d e r W r i t e r F i l t e r . j a v a : 9 0 ) < b r   / >         a t   o r g . s p r i n g f r a m e w o r k . s e c u r i t y . w e b . h e a d e r . H e a d e r W r i t e r F i l t e r . d o F i l t e r I n t e r n a l ( H e a d e r W r i t e r F i l t e r . j a v a : 7 5 ) < b r   / >         a t   o r g . s p r i n g f r a m e w o r k . w e b . f i l t e r . O n c e P e r R e q u e s t F i l t e r . d o F i l t e r ( O n c e P e r R e q u e s t F i l t e r . j a v a : 1 1 6 ) < b r   / >         a t   o r g . s p r i n g f r a m e w o r k . s e c u r i t y . w e b . F i l t e r C h a i n P r o x y $ V i r t u a l F i l t e r C h a i n . d o F i l t e r ( F i l t e r C h a i n P r o x y . j a v a : 3 7 4 ) < b r   / >         a t   o r g . s p r i n g f r a m e w o r k . s e c u r i t y . w e b . c o n t e x t . S e c u r i t y C o n t e x t H o l d e r F i l t e r . d o F i l t e r ( S e c u r i t y C o n t e x t H o l d e r F i l t e r . j a v a : 8 2 ) < b r   / >         a t   o r g . s p r i n g f r a m e w o r k . s e c u r i t y . w e b . c o n t e x t . S e c u r i t y C o n t e x t H o l d e r F i l t e r . d o F i l t e r ( S e c u r i t y C o n t e x t H o l d e r F i l t e r . j a v a : 6 9 ) < b r   / >         a t   o r g . s p r i n g f r a m e w o r k . s e c u r i t y . w e b . F i l t e r C h a i n P r o x y $ V i r t u a l F i l t e r C h a i n . d o F i l t e r ( F i l t e r C h a i n P r o x y . j a v a : 3 7 4 ) < b r   / >         a t   o r g . s p r i n g f r a m e w o r k . s e c u r i t y . w e b . c o n t e x t . r e q u e s t . a s y n c . W e b A s y n c M a n a g e r I n t e g r a t i o n F i l t e r . d o F i l t e r I n t e r n a l ( W e b A s y n c M a n a g e r I n t e g r a t i o n F i l t e r . j a v a : 6 2 ) < b r   / >         a t   o r g . s p r i n g f r a m e w o r k . w e b . f i l t e r . O n c e P e r R e q u e s t F i l t e r . d o F i l t e r ( O n c e P e r R e q u e s t F i l t e r . j a v a : 1 1 6 ) < b r   / >         a t   o r g . s p r i n g f r a m e w o r k . s e c u r i t y . w e b . F i l t e r C h a i n P r o x y $ V i r t u a l F i l t e r C h a i n . d o F i l t e r ( F i l t e r C h a i n P r o x y . j a v a : 3 7 4 ) < b r   / >         a t   o r g . s p r i n g f r a m e w o r k . s e c u r i t y . w e b . s e s s i o n . D i s a b l e E n c o d e U r l F i l t e r . d o F i l t e r I n t e r n a l ( D i s a b l e E n c o d e U r l F i l t e r . j a v a : 4 2 ) < b r   / >         a t   o r g . s p r i n g f r a m e w o r k . w e b . f i l t e r . O n c e P e r R e q u e s t F i l t e r . d o F i l t e r ( O n c e P e r R e q u e s t F i l t e r . j a v a : 1 1 6 ) < b r   / >         a t   o r g . s p r i n g f r a m e w o r k . s e c u r i t y . w e b . F i l t e r C h a i n P r o x y $ V i r t u a l F i l t e r C h a i n . d o F i l t e r ( F i l t e r C h a i n P r o x y . j a v a : 3 7 4 ) < b r   / >         a t   o r g . s pringframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:233)
at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:191)
at org.springframework.web.filter.CompositeFilter$VirtualFilterChain.doFilter(CompositeFilter.java:113)
at org.springframework.web.servlet.handler.HandlerMappingIntrospector.lambda$createCacheFilter$3(HandlerMappingIntrospector.java:195)
at org.springframework.web.filter.CompositeFilter$VirtualFilterChain.doFilter(CompositeFilter.java:113)
at org.springframework.web.filter.CompositeFilter.doFilter(CompositeFilter.java:74)
at org.springframework.security.config.annotation.web.configuration.WebMvcSecurityConfiguration$CompositeFilterChainProxy.doFilter(WebMvcSecurityConfiguration.java:230)
at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:362)
at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:278)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140)
at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140)
at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140)
at org.springframework.boot.web.servlet.support.ErrorPageFilter.doFilter(ErrorPageFilter.java:124)
at org.springframework.boot.web.servlet.support.ErrorPageFilter$1.doFilterInternal(ErrorPageFilter.java:99)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
at org.springframework.boot.web.servlet.support.ErrorPageFilter.doFilter(ErrorPageFilter.java:117)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:167)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:483)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:663)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:115)
at org.apache.catalina.valves.RemoteIpValve.invoke(RemoteIpValve.java:731)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:663)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:344)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:384)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:905)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1741)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52)
at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1190)
at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63)
at java.base/java.lang.Thread.run(Thread.java:1583)
Ответ SAML от IDP успешен, я вижу это в журналах, но он не работает, поскольку сервер неправильно поддерживает InResponseTo. Это отображается как:

Код: Выделить всё

SAML 2 Assertion ValidationContext - static parameters: {saml2.ValidIssuers=[xxx], saml2.SubjectConfirmation.ValidInResponseTo=null, saml2.ClockSkew=PT5M, saml2.Conditions.ValidAudiences=[xxx], saml2.SubjectConfirmation.ValidRecipients=[xxxx/saml/process/1]}
Это происходит только при первом запросе. Если я повторю попытку сразу после (я предполагаю, что сеанс установлен), запрос будет успешным, а сервер покажет не -null для «saml2.SubjectConfirmation.ValidInResponseTo» в моих журналах при обработке ответа. Если я затем подожду 2 минуты, произойдет снова сбой, что похоже на проблему с тем же сервером, но мне не удалось ее отследить.
IDP перенаправляется на:< /p>
https://xxxx/saml2/authenticate/1?idpme ... ntContext= true
Таким образом, этот запрос должен установить идентификатор сеанса cookie/jsession, а InResponseTo должен храниться вместе с сеансом.
Любые идеи, подсказки, и т. д? Буду признателен.
SpringBoot 3.3.5
tomcat 10

Подробнее здесь: https://stackoverflow.com/questions/791 ... dp-initiat
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»