Trong Xuân An OAuth2 xác thực dựa khi khách hàng gửi một access token mà cần phải được làm mới, lớp DefaultTokenServices ném một InvalidTokenException (xem tại dòng 235):Xuân OAuth2 - tùy chỉnh xử lý ngoại lệ
đầu ra khi điều này xảy ra là:
{"error":"invalid_token","error_description":"Invalid access token: a0cb5ab9-7281-46bd-a9a2-796a04a906c9"
}
Tôi muốn thay đổi đầu ra này nhưng bị mất. Một số câu trả lời khác được đề xuất thiết lập tùy chỉnh exceptionRenderer nhưng điều này không hoạt động, trình kết xuất ngoại lệ tùy chỉnh của tôi không bao giờ được gọi trong những trường hợp này.
Cũng có một số được gọi là dịch ngoại lệ nhưng chúng không được gọi là bất kỳ trường hợp nào.
Một phần của cấu hình mùa xuân của tôi:
<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" />
Các renderer ngoại lệ:
public class MyExceptionRenderer implements OAuth2ExceptionRenderer {
@Override
public void handleHttpEntityResponse(HttpEntity<?> responseEntity, ServletWebRequest webRequest) throws Exception {
System.out.println("Thrown exception");
}
}
Tôi cũng đã thêm một Mapper tùy chỉnh ngoại lệ đó sẽ nhận được TẤT CẢ các trường hợp ngoại lệ, nhưng kể từ khi tôi giả sử một servlet khác của nó không thực sự làm việc trong trường hợp này?
@Provider
public class GenericExceptionMapper implements ExceptionMapper<Throwable> {
@Override
public Response toResponse(Throwable ex) {
System.out.println("MAPPING EXCEPTION");
return Response.status(200).entity().build();
}
}
tôi có thể nắm bắt các trường hợp AuthenticationException, nhưng không phải bất kỳ InvalidTokenExceptions.
Bất kỳ trợ giúp nào về vấn đề này? Spring thực sự thu nhận InvalidTokenException này ở đâu và làm thế nào tôi có thể thiết lập nó để tôi có thể cung cấp đầu ra tùy chỉnh?
Bạn đang sử dụng phiên bản Oauth2 nào? '2.0.7' hoặc' 1. * '? – Karthik
Tôi đang sử dụng chúng: – breakline