Spring Boot App как клиентское приложение OAuth2.0 - PullRequest
0 голосов
/ 12 октября 2018

Я бы хотел настроить мой текущий загрузочный проект 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 тип предоставления.

...