Так что я вхожу в приложение и go во внешнюю функцию, которая требует другого входа (все в приложении). Теперь стало невозможно войти в эту внешнюю функцию, поскольку она выдает ошибку (код 400):
OAuth Error. error="invalid_request", error_description="At least one redirect_uri must be registered with the client."
Эта ошибка выдается, когда я использую приложение или пытаюсь войти во внешнюю функцию напрямую.
Я обновил Spring Boot в проекте до 1.5.22 с 1.4.1, что могло быть причиной этого. После понижения версии Spring Boot до версии 1.4.1 проблема исчезла.
Затем я попытался снова обновить Spring Boot до версии 1.5.22 и дополнительно включил это в application.configuration:
security.oauth2.client.pre-established-redirect-uri=https://page.com
security.oauth2.client.registered-redirect-uri=https://page.com
security.oauth2.client.use-current-uri=false
It не помогло Затем на вкладке «Сеть» браузера я заметил параметр redirect_url в параметрах строки запроса, который отличается от указанного мной. Это было что-то вроде:
https://page.com/oauth-authorized/app
Я обновил файл application.configuration, как указано выше. Однако ничего не изменилось.
Как продолжить?
Какой-то код:
public class AuthorizationServerConfiguration extends AuthorizationServerConfigurerAdapter {
@Autowired
@Qualifier("authenticationManagerBean")
private AuthenticationManager authenticationManager;
@Autowired
private TokenStore tokenStore;
@Autowired
@Qualifier("clientDetailsServiceImpl")
private ClientDetailsService clientDetailsService;
@Autowired
private DefaultTokenServices tokenServices;
@Autowired
private TokenEnhancer tokenEnhancer;
@Override
public void configure(AuthorizationServerEndpointsConfigurer endpoints) throws Exception {
endpoints.setClientDetailsService(clientDetailsService);
endpoints
.tokenStore(tokenStore)
.authenticationManager(authenticationManager)
.tokenServices(tokenServices)
.tokenEnhancer(tokenEnhancer)
.pathMapping("/oauth/token", "/api/oauth/token")
.pathMapping("/oauth/check_token", "/api/oauth/check_token")
.pathMapping("/oauth/authorize", "/api/oauth/authorize")
.pathMapping("/oauth/error", "/api/oauth/error");
}
@Override
public void configure(AuthorizationServerSecurityConfigurer oauthServer) throws Exception {
oauthServer.checkTokenAccess("permitAll()");
}
@Override
public void configure(ClientDetailsServiceConfigurer clients) throws Exception {
clients.withClientDetails(clientDetailsService);
}
}
=================================================================================================
@Service
@Primary
public class ClientDetailsServiceImpl implements ClientDetailsService {
@Autowired
private ClientRepository clientRepository;
@Override
public ClientDetails loadClientByClientId(String clientId) throws ClientRegistrationException {
Client client = clientRepository.findOneByClientId(clientId)
.orElseThrow(() -> new NoSuchClientException(
String.format("Client with clientId=%s was not found", clientId)));
return new com.app.auth.domain.ClientDetails(client);
}
}
Редактировать: После понижения Spring Boot снова проблема кажется исчезла, но это не так уж и много исправления.