복붙노트

[SPRING] 휴식, 봄 자신의 OAuth2 서버 + 페이스 북, 구글, 야후와 같은 OAuth2 공급자

SPRING

휴식, 봄 자신의 OAuth2 서버 + 페이스 북, 구글, 야후와 같은 OAuth2 공급자

스프링 부트 애플리케이션에서는 스프링 보안과 스프링 OAuth2를 사용하여 스프링 MVC REST 엔드 포인트를 보안했다. 자신의 Authorization \ Resource 서버가 있으므로 API (API)와 comunicate하기 위해 클라이언트 (AngularJS)가 API 권한 부여 서버에서 acessToken을 얻어야합니다.

모든 것이 잘 작동하지만 내 API의 인증 / 승인을 위해서는 사용자가 계정을 만들고 사용자 이름 / 비밀번호를 제공해야합니다.

이 과정을 단순화하고 싶습니다. Google / Facebook / Twitter oAuth 제공 업체를 통해 API에 대한 사용자 인증을 제안하고 싶습니다.

지금 당장 나는 그것이 어떻게 작동해야하는지 명확하게 이해하지 못하고있다. 예를 들어 나의 아이디어 중 하나 - 페이스 북은 자신의 accessToken을 발행하고이를 내 API로 다시 전달할 것이다. 이 accessToken을 기반으로 내 API는 자체 accessToken을 발급하여 클라이언트 애플리케이션 (AngularJS)으로 다시 전달합니다. 또는 Facebook 앱 토큰을 클라이언트 앱에 직접 전달해야합니까?

기술 된 케이스에 대한 올바른 아키텍처는 무엇입니까? 어떻게 작동해야합니까?

Spring 프레임 워크에 기반한이 아키텍처를 보여주는 몇 가지 예가 있을까요?

해결법

  1. ==============================

    1.외부 제공자에게 인증을 위임하려면 OAuth2ClientAuthenticationProcessingFilter를 사용하거나 Spring Cloud Security에서 제공되는 편리한 주석과 외부 구성을 사용할 수 있습니다. 예제 (Spring Cloud Security 홈 페이지에서) :

    외부 제공자에게 인증을 위임하려면 OAuth2ClientAuthenticationProcessingFilter를 사용하거나 Spring Cloud Security에서 제공되는 편리한 주석과 외부 구성을 사용할 수 있습니다. 예제 (Spring Cloud Security 홈 페이지에서) :

    Aplication.java:

    @SpringBootApplication
    @EnableOAuth2Sso
    public class Application {
       ...
    }
    

    application.yml :

    spring:
      oauth2:
        client:
          clientId: bd1c0a783ccdd1c9b9e4
          clientSecret: 1a9030fbca47a5b2c28e92f19050bb77824b5ad1
          accessTokenUri: https://github.com/login/oauth/access_token
          userAuthorizationUri: https://github.com/login/oauth/authorize
          clientAuthenticationScheme: form
        resource:
          userInfoUri: https://api.github.com/user
          preferTokenInfo: false
    

    귀하의 응용 프로그램이 포트 8080에서 실행되는 경우 github와 함께 작동합니다 (저는 믿습니다). 비슷한 구성은 facebook, cloud foundry, google 및 다른 OAuth2 공급자와 함께 작동합니다.

  2. ==============================

    2.자신의 OAuth2 또는 OAuth2 + JWT 토큰의 경우 다음 질문을 살펴보십시오. Spring Security OAuth2와 Spring Social 통합 특히 @rbarriuso가 제공 한 대답. 제 3 자 OAuth2 제공자와의 성공적인 인증 후 자신의 SocialAuthenticationSuccessHandler를 제공하고 자신의 oauth2Token으로 리디렉션을 보내야합니다.

    자신의 OAuth2 또는 OAuth2 + JWT 토큰의 경우 다음 질문을 살펴보십시오. Spring Security OAuth2와 Spring Social 통합 특히 @rbarriuso가 제공 한 대답. 제 3 자 OAuth2 제공자와의 성공적인 인증 후 자신의 SocialAuthenticationSuccessHandler를 제공하고 자신의 oauth2Token으로 리디렉션을 보내야합니다.

    즉,이 기술에 의존하지 않는 솔루션의 주된 아이디어는 타사 OAuth2 공급자와의 성공적인 인증 후에 사용자 고유의 액세스 토큰을 발급하여 사용자에게 제공하는 것입니다.

  3. from https://stackoverflow.com/questions/29547671/rest-spring-own-oauth2-server-oauth2-providers-like-facebook-google-yahoo by cc-by-sa and MIT license