In Spring Security OAuth2 basierter Authentifizierung, wenn der Client einen Zugriffstoken, die aktualisiert werden muss sendet, wirft die DefaultTokenServices Klasse eine InvalidTokenException (siehe in Zeile 235):Frühling OAuth2 - benutzerdefinierte Exception-Handler
Die Ausgabe, wenn dies geschieht, ist etwas wie:
{"error":"invalid_token","error_description":"Invalid access token: a0cb5ab9-7281-46bd-a9a2-796a04a906c9"
}
Ich möchte diesen Ausgang ändern, aber ich habe verloren. Eine andere Antwort schlug vor, eine benutzerdefinierte exceptionRenderer einzurichten, aber das hat auch nicht funktioniert, meine benutzerdefinierte Ausnahme-Renderer wird nie in diesen Fällen aufgerufen.
Auch gibt es eine so genannte Ausnahmeübersetzer, aber sie wurden entweder auf keinen Fall aufgerufen.
Teil meiner Feder config:
<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" />
Die Ausnahme-Renderer:
public class MyExceptionRenderer implements OAuth2ExceptionRenderer {
@Override
public void handleHttpEntityResponse(HttpEntity<?> responseEntity, ServletWebRequest webRequest) throws Exception {
System.out.println("Thrown exception");
}
}
ich auch eine benutzerdefinierte Exception Mapper hinzugefügt, die alle Ausnahmen bekommen sollte, aber da ich nehmen Sie ein anderes Servlet an, das funktioniert in diesem Fall nicht wirklich?
@Provider
public class GenericExceptionMapper implements ExceptionMapper<Throwable> {
@Override
public Response toResponse(Throwable ex) {
System.out.println("MAPPING EXCEPTION");
return Response.status(200).entity().build();
}
}
ich Fälle von AuthenticationException fangen konnte, aber keine des InvalidTokenExceptions.
Irgendwelche Hilfe diesbezüglich? Wo fängt Spring tatsächlich diese InvalidTokenException ab und wie kann ich sie einrichten, damit ich eine benutzerdefinierte Ausgabe bereitstellen kann?
Welche Version von Oauth2 verwenden Sie? '2.0.7' oder' 1. * '? – Karthik
Ich verwende diese: – breakline