In autenticazione basata Primavera di sicurezza OAuth2 quando il client invia un token di accesso che deve essere aggiornata, la classe DefaultTokenServices genera InvalidTokenException (vedi alla linea 235):Primavera OAuth2 - personalizzato gestore di eccezioni
l'uscita quando questo accade è qualcosa di simile:
{"error":"invalid_token","error_description":"Invalid access token: a0cb5ab9-7281-46bd-a9a2-796a04a906c9"
}
vorrei cambiare questa uscita, ma mi sono perso. Qualche altra risposta suggeriva di creare un'eccezione exceptionRenderer ma questo non ha funzionato, il mio renderizzatore di eccezioni personalizzato non viene mai chiamato in questi casi.
Inoltre c'è qualcosa chiamato traduttore di eccezione ma non sono stati chiamati in alcun caso.
Parte del mio config primavera:
<bean id="clientAuthenticationEntryPoint"
class="org.springframework.security.oauth2.provider.error.OAuth2AuthenticationEntryPoint">
<property name="typeName" value="Basic"/>
<property name="exceptionRenderer" ref="myExceptionRenderer" />
</bean>
<bean id="oauthAuthenticationEntryPoint"
class="org.springframework.security.oauth2.provider.error.OAuth2AuthenticationEntryPoint">
<property name="exceptionRenderer" ref="myExceptionRenderer" />
<property name="exceptionTranslator" ref="listyOauthExceptionTranslator" />
</bean>
<bean id="oauthAccessDeniedHandler" class="org.springframework.security.oauth2.provider.error.OAuth2AccessDeniedHandler" >
<property name="exceptionRenderer" ref="myExceptionRenderer" />
<property name="exceptionTranslator" ref="myExceptionTranslator" />
</bean>
<bean id="myExceptionRenderer" class="com.example.exceptions.MyOauth2ExceptionRenderer" />
<bean id="myExceptionTranslator" class="com.example.exceptions.MyOauth2ExceptionTranslator" />
Il renderer eccezione:
public class MyExceptionRenderer implements OAuth2ExceptionRenderer {
@Override
public void handleHttpEntityResponse(HttpEntity<?> responseEntity, ServletWebRequest webRequest) throws Exception {
System.out.println("Thrown exception");
}
}
Ho anche aggiunto un Mapper eccezione personalizzata che dovrebbe ottenere tutte le eccezioni, ma dal momento che supponiamo che sia un altro servlet che non funziona davvero in questo caso?
@Provider
public class GenericExceptionMapper implements ExceptionMapper<Throwable> {
@Override
public Response toResponse(Throwable ex) {
System.out.println("MAPPING EXCEPTION");
return Response.status(200).entity().build();
}
}
ho potuto prendere i casi di AuthenticationException, ma non uno qualsiasi dei InvalidTokenExceptions.
Qualsiasi aiuto in merito? Da dove viene effettivamente Spring a prendere questo InvalidTokenException e come posso configurarlo in modo da poter fornire un output personalizzato?
Quale versione di Oauth2 stai utilizzando? '2.0.7' o' 1. * '? – Karthik
Sto usando questi: – breakline