2016-07-10 4 views
1

저는 인증 메커니즘에 익숙하지 않아 Angular 프론트 엔드 및 Play Framework (Java) 백엔드를 사용하여 인증 메커니즘을 설계하는 방법을 파악하는 데 어려움이 있습니다. 기본 아이디어는 다음과 같습니다.Angular + Play Framework (Java)로 SPA 인증

  1. 각도 프런트 엔드가 Play Framework 인증 메커니즘에 REST 인증 호출을 보냅니다.
  2. 재생 각도가 이상적으로는 CSRF 토큰을 사용하고자하는 싶습니다 토큰

에 따라 다른 REST 통화를 할 수 있습니다

  • 일부 토큰 (각도로 전송)를 생성한다. Angular and Play 인증을 통합하는 방법에 대한 정보는 거의 찾지 못했지만 그 중 어느 것도 내 앱에서 구현할만큼 완벽하지 않았습니다. 물론 Javascript와 Play 인증을 통합하는 방법에 대한 많은 정보가 있지만 이는 매우 다른 경우입니다.

    그래서 내 질문은 그것을 디자인하는 방법입니다. 어떤 프레임 워크/기능을 사용하여 작동하게 만들고 그 영역에서 각도 및 재생을 통합하는 방법입니다. 이를 달성하기위한 일반적인 단계는 충분합니다. 즉, Play에서 해당 인증 프레임 워크를 사용하고, Play에서 해당 기능을 구현하고, Angular로 해당 메소드를 사용하고, 그런 방식으로 모든 것을 연결합니다. 물론 더 구체적인 지침도 환영합니다. 마지막으로 데이터베이스에 암호 해시를 저장하고 해시 방법 (모든 재생 메커니즘 또는 기타 프레임 워크)에 대한 팁도 도움이됩니다.

  • 답변

    0

    JWT과 같은 것을 사용하여 토큰을 만들어 각도 앱에 줄 수 있습니다. 기본적으로 흐름은 다음과 같습니다.

    • 사용자는 인증 (예 : 이메일 및 비밀번호)을 제공합니다.
    • 정보를 Play에 보내면 자격 증명을 확인하고 모든 것이 정상이면 토큰을 생성 할 수 있습니다. 이 토큰에는 사용자가 보유한 역할/역할, 생성 날짜 등과 같은 많은 정보가있을 수 있습니다.
    • 토큰을 얻은 다음 각도 앱에서 토큰을 사용할 수 있습니다. 제공되는 토큰이 유효한 경우 재생 측면에서, 당신은 확인해야합니다 (이 앱에서 생성 된 그것을 가지고하지 만료) 당신이 그 토큰 (예를 저장 할 수 있습니다

    참고 : 데이터베이스에) 토큰 블랙리스트 또는 토큰의 자동 갱신과 같은 것을 구현하려는 경우 ...

    다른 옵션은 토큰 (예 : base64 임의의 문자열)을 생성하여 관련 데이터베이스와 함께 데이터베이스에 저장하는 것입니다. 정보 (만료일 등)가 필요하거나 Play에서 쿠키를 설정하고 앱에서 사용하도록 할 수도 있습니다 (HTTP 만 있기 때문에 Angular로 기본 Play 쿠키를 직접 사용할 수 없습니다).

    암호 해싱과 관련하여 scala/java 라이브러리를 사용할 수 있지만 안전한 것을 선택해야합니다. 보통 BCrypt을 사용하지만 다른 옵션 (스크립, pbkdf2 등)이 많이 있습니다

    관련 문제