0

내 REST 서비스에서 사용자를 인증하는 방법에 대해 고심하고 있습니다. Google 로그인 (안드로이드, 즉)을 사용할 계획입니다. 나는 내 서버에서 사용자를 인증하는 방법을 알 수 없다. (사용자의 신원을 확인하는 것 외에는) 어떤 권한도 갖고 싶지 않습니다. 내가 원하는 것은 요청을 받았을 때 사용자가 자신이 말하는 사람인지 확인하는 것입니다.Google을 사용하여 사용자 인증

제 생각에는 사용자가 로그인하여 Google에서 토큰을 얻은 다음 그의 요청에 따라 그의 신원을 확인하는 데 사용할 서버에 토큰을 보냅니다. 그러나 내가 읽은 것으로부터 사용자는 자신의 요청을 JWT (json 웹 토큰)로 인코딩 한 다음 Google 서버와 직접 대화하지 않고 신원을 확인하는 데 사용합니다. 내가 제대로 이해 했니? 구글의 documentation

, 당신이 오프라인 액세스를 필요로하지 않는 경우, 액세스 토큰을 검색하고 보안 연결을 통해 서버에 보낼 수

을 말한다. 서버의 OAuth 2.0 클라이언트 ID없이 범위를 지정하여 GoogleAuthUtil.getToken()을 사용하여 직접 액세스 토큰을 얻을 수 있습니다.

그러나 서버가 토큰으로 무엇을해야하는지는 설명하지 않습니다.

답변

1

사용자가 Google+ 로그인을 통해 로그인 할 수있는 Android 앱이 있습니다. 그러면이 Android 앱이 REST API를 호출합니다. 원하는 것은 서비스가이 요청을 인증하는 방법입니다. 이 Android 클라이언트는 토큰을 사용하여 서비스에 요청을 보내며 인증을 위해이 토큰의 유효성을 검사해야합니다. 내 이해가 맞습니까?

그렇다면 서비스로 전송 된 토큰의 유효성을 검사해야합니다. 귀하가 언급 한 참조는 귀하의 경우 Google API 호출을위한 것입니다. 자체 서비스 API 호출입니다. Android 측의 경우 참조를 따르고 서비스 측면에서는 TokenInfo validation을 사용하여 사용자를 인증 할 수 있습니다.

+0

그게 내가 원하는 부분이야. 토큰의 유효성을 검사하는 방법 (그리고 사용자의 신원을 인증하는 방법)을 파악할 수 없었습니다. 그러나 위조 방지 토큰을 사용해야하는지 알고 계시지 만 [here] (https://developers.google.com/+/web/signin/server-side-flow#step_2_create_an_anti-request_forgery_state_token) 문서에 나와 있습니다. – Nepoxx

+0

예, 'state'는 RECOMMENDED REQUIED가 아니지만이 매개 변수는 사이트 간 요청 위조를 방지하기 위해 사용되어야합니다 (SHOULD). –