Я бы хотел настроить мой текущий загрузочный проект Spring в качестве клиента OAuth2.0 для интеграции стороннего сервиса.Он использует authorization_code
тип предоставления в потоке OAuth.
Теперь Spring обеспечивает поддержку потока кода авторизации OAuth, но я не могу понять, что должно быть реализовано на моем конце, а что Spring делает автоматически.
Таким образом, в основном в authorization_code
типе предоставления должны присутствовать UserAuthUrl и RedirectUrl для получения кода авторизации.Должен ли я реализовать это?Если да, то как передать код авторизации существующему механизму Spring, который получает токен доступа.Если нет, что я могу предоставить классу AuthorizationCodeResourceDetails
?
Используемая зависимость:
<dependency>
<groupId>org.springframework.security.oauth</groupId>
<artifactId>spring-security-oauth2</artifactId>
</dependency>
Код конфигурации OAuth:
@Configuration
@EnableOAuth2Client
public class WebinarConfig {
private static final Logger logger = LoggerFactory.getLogger(WebinarConfig.class);
@Autowired
ApplicationContext applicationContext;
@Bean
@ConfigurationProperties("oauth2.client")
public AuthorizationCodeResourceDetails oAuthDetails() {
return new AuthorizationCodeResourceDetails();
}
@Bean
public RestTemplate webinarRestTemplate() {
return new OAuth2RestTemplate(oAuthDetails());
}
@PostConstruct
public void afterCreation() {
AuthorizationCodeResourceDetails oAuthDetails = applicationContext.getBean("oAuthDetails", AuthorizationCodeResourceDetails.class);
logger.info(
"For ClientCredentialsResourceDetails, clientId: {}, clientSecret: {}, grant_type: {}, auth_token_uri: {}",
oAuthDetails.getClientId(), oAuthDetails.getClientSecret(), oAuthDetails.getGrantType(), oAuthDetails.getAccessTokenUri());
}
}
clientId, clientSecret, grantType, authTokenUri печатаются нормально, но класс дополнительно имеет свойства preEstablishedRedirectUri и userAuthorizationUri.Мне нужна помощь о том, как я должен обращаться с этими выше свойствами.Должен ли я создать контроллер или что-то еще?
Хорошая ссылка здесь такая: https://developer.okta.com/blog/2018/04/02/client-creds-with-spring-boot единственное отличие состоит в том, что он использует client_credentials
тип предоставления.