Как обеспечить безопасность Spring Boot RESTful с OAuth2 и входом в систему Social

Я пытаюсь использовать приложение Angular 2 Front End в качестве клиента, который будет использовать ресурс Spring RESTful Web Service.

Так что подумайте о защите этого веб-сервиса с помощью аутентификации OAuth 2 и входа в социальную сеть (Google и Facebook).

После успешного входа в систему с помощью Social Login он не перенаправляет на URL-адрес (порт, на котором Angular 2 работает в локальной среде с портом 3000), с которого я сделал запрос, но он перенаправляет на порт 8080 в локальной среде

localhost:3000 - внешний интерфейс localhost:8080 - OAuth

Я следовал этому руководству https://spring.io/guides/tutorials/spring-boot-oauth2/ для вышеуказанного сценария, но они используют JAVA-приложение в качестве своего клиента и обрабатывают аннотации.

1 ответ

Я могу добиться социального входа в систему с несколькими ресурсами RESTful, выполнив два примера приложений, следующие шаги:

(1) Оформить заказ https://github.com/spring-guides/tut-spring-security-and-angular-js/tree/master/oauth2

(2) Удалить папку "authserver" (мы будем использовать auth-server из другого проекта)

(3) Оформить проверку подлинности сервера из социальной демоверсии: https://github.com/spring-guides/tut-spring-boot-oauth2/tree/master/auth-server

(4) Откройте application.yml проекта "ui" и внесите следующие изменения:

server.port: 9001
server.context-path: /zuul
debug: true

spring:
  aop:
    proxy-target-class: true


security:
  oauth2:
    client:
      client-id: acme
      client-secret: acmesecret
      access-token-uri: http://localhost:8080/oauth/token
      user-authorization-uri: http://localhost:8080/oauth/authorize
      grant-type: implicit
    resource:
      user-info-uri: http://localhost:8080/me

zuul:
  routes:
    resource:
      path: /resource/**
      url: http://localhost:9000/resource
    user:
      path: /user/**
      url: http://localhost:8080/me

logging:
  level:
    org.springframework.security: DEBUG

(5) Откройте файл application.yml на auth-сервере и добавьте свойства Google:

google:
  client:
    clientId: <your client id>
    clientSecret: <your client secret>
    accessTokenUri: https://accounts.google.com/o/oauth2/token
    scope: profile,email
    userAuthorizationUri: https://accounts.google.com/o/oauth2/auth
    clientAuthenticationScheme: form
    redirect-uri: http://localhost:8080
  resource:
    userInfoUri: https://www.googleapis.com/plus/v1/people/me

(6) Откройте SocialApplication.java на auth-сервере: добавьте бин и фильтры, связанные с Google (аналогично facebook и github).

(7) переименуйте application.properties в application.yml проекта "resource", следующим является содержимое этого yml:

server:
  port: 9000
  context-path: /resource
security:
  oauth2:
    resource:
      user-info-uri: http://localhost:8080/me

logging:
  level:
    org.springframework.security: DEBUG
    org.springframework.web: DEBUG

(8) Теперь запустите проекты auth-server, resource и ui и нажмите URL с портом 9001 и context /zuul.

Другие вопросы по тегам