Ho un'applicazione che ha @EnableOAuth2Sso
sul WebSecurityConfigurerAdapter
Primavera di sicurezza OAuth2 - @ EnableOauth2Sso ma accettare gettoni come l'autenticazione, anche
Dopo aver aggiunto @EnableOAuth2Sso
l'applicazione mi reindirizza al server di autorizzazione e consente l'accesso dopo il login a questo server di autorizzazione . Voglio offrire l'accesso API così, quindi voglio applicazioni siano in grado di accedere alle mie risorse passando un access token tramite l'Autorizzazione-Header
Authorization: bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9...
ho debuged attraverso il filtro di autenticazione che viene utilizzato con @EnableOAuth2Sso
notato, che l'autorizzazione -Il valore della persona non viene controllato.
Dopo di che ho cercato di creare un filtro personalizzato e ha aggiunto questo filtro per la configurazione di sicurezza
@Override
public void configure(HttpSecurity http) throws Exception {
http.addFilter(myCustomFilter)
...;
}
Ma ora ho la seguente eccezione:
Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [javax.servlet.Filter]: Factory method 'springSecurityFilterChain' threw exception; nested exception is org.springframework.security.config.annotation.AlreadyBuiltException: This object has already been built
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:189)
at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:588)
... 26 more
Caused by: org.springframework.security.config.annotation.AlreadyBuiltException: This object has already been built
at org.springframework.security.config.annotation.AbstractSecurityBuilder.build(AbstractSecurityBuilder.java:44)
at org.springframework.security.config.annotation.web.configuration.WebSecurityConfiguration.springSecurityFilterChain(WebSecurityConfiguration.java:105)
at org.springframework.security.config.annotation.web.configuration.WebSecurityConfiguration$$EnhancerBySpringCGLIB$$f0788cea.CGLIB$springSecurityFilterChain$5(<generated>)
at org.springframework.security.config.annotation.web.configuration.WebSecurityConfiguration$$EnhancerBySpringCGLIB$$f0788cea$$FastClassBySpringCGLIB$$7e95689d.invoke(<generated>)
at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:228)
at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:318)
at org.springframework.security.config.annotation.web.configuration.WebSecurityConfiguration$$EnhancerBySpringCGLIB$$f0788cea.springSecurityFilterChain(<generated>)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:162)
In un primo momento ho pensato che ho Ho fatto qualcosa di sbagliato all'interno del mio filtro ma ho finito con una semplice classe di filtro che non faceva nient'altro che procedere con la filterchain e avere ancora lo stesso errore.
Così ho due domande:
- Perché ottengo questa eccezione?
- Esiste un modo per consentire l'autenticazione del token per gli endpoint in un'applicazione che utilizza
@EnableOAuth2Sso
?
Immagino tu intenda * @ EnableOAuth2Sso * invece di * @ EnableSso *? Puoi approfondire "redirect funziona bene" e "Autorizzazione-intestazione con un token al portatore, anche" un po 'di più – jah
Sì hai ragione. Ho corretto gli errori di battitura e ho cercato di spiegare meglio cosa volevo ottenere. –