Я пытаюсь реализовать тип предоставления кода авторизации с помощью Spring Boot и сталкиваюсь с UserRedirectRequiredException.Насколько я понимаю, существует проблема с кодом авторизации, который не может обмениваться кодом токена доступа. Ниже упомянутый код используется для того же самого.Было бы полезно, если бы кто-то мог предоставить некоторые сведения о том, как вызывать API, защищенный с помощью типа разрешенного разрешения.
То, что я пробовал:
Настройка фильтра Регистрация компонента в классе конфигурации, как упоминалось ниже, но он это сделалтоже не поможет:
@Bean
public FilterRegistrationBean<OAuth2ClientContextFilter>
oauth2ClientFilterRegistration(OAuth2ClientContextFilter filter) {
FilterRegistrationBean<OAuth2ClientContextFilter> registration = new
FilterRegistrationBean<OAuth2ClientContextFilter>();
registration.setFilter(filter);
registration.setOrder(-100);
return registration;
}
@RestController
@EnableOAuth2Client
public class ApiController {
@Value("${security.oauth2.client.clientId}")
private String clientId;
@Value("${security.oauth2.client.clientSecret}")
private String clientSecret;
@Value("${security.oauth2.client.accessTokenUri}")
private String accessTokenUri;
@Value(("${security.oauth2.client.userAuthorizationUri}"))
private String userAuthorizationUri;
@Value("${security.oauth2.client.apiUrl}")
private String apiUrl;
@Value("${security.oauth2.client.redirectUri}")
private String redirectUri;
@Autowired
private OAuth2ClientContext oAuth2Context;
@Bean
public OAuth2RestTemplate getOauth2RestTemplate() {
return new OAuth2RestTemplate(resource(),oAuth2Context);
}
@RequestMapping("/api")
public String retrieve() {
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
headers.set("Accept","application/json");
headers.set("Accept-Encoding","gzip, deflate, br");
String parameters "grant_type=authorization_code&client_id=xxxxxxxxxx&client_secret=xxxxxxxxx";
OAuth2RestTemplate oAuth2RestTemplate = getOauth2RestTemplate();
HttpEntity request = new HttpEntity(parameters,headers);
HttpEntity token = oAuth2RestTemplate.postForEntity(accessTokenUri,
request, String.class);
private OAuth2ProtectedResourceDetails resource() {
AuthorizationCodeResourceDetails authorizationCodeResourceDetails = new
AuthorizationCodeResourceDetails();
authorizationCodeResourceDetails.setClientId(clientId);
authorizationCodeResourceDetails.setClientSecret(clientSecret);
authorizationCodeResourceDetails.setAccessTokenUri(accessTokenUri);
authorizationCodeResourceDetails.
setuserAuthorizationUri(userAuthorizationUri);