2017-01-04 3 views
3

모바일 응용 프로그램 (iOS)에서 ID 토큰을 가져 오는 백엔드 서버를 만듭니다. 이 토큰이 정상이며 안전하게 사용할 수 있는지 어떻게 확인할 수 있습니까?Google OpenID Connect : id_token을 확인하는 방법?

공식 확인하는 토큰에 대한 구글의 문서 :

그것은 구글에 확인 요청을 보내지 않고, 로컬 ID 토큰을 확인하는 것이 좋습니다

https://developers.google.com/identity/protocols/OpenIDConnect#validatinganidtoken

. 문서 에서처럼 ID 토큰의 일부 필드를 로컬에서 확인하는 것이 좋습니까? 아니면 토큰을 확인하기 위해 Google에 일부 요청을 보내야합니까?

구글 문서는 디버깅과 함께 ID 토큰을 확인하는 방법에 대한 언급 :

https://www.googleapis.com/oauth2/v3/tokeninfo?id_token=XYZ123

그러나 생산에 사용하는 것을 권장하지 않습니다. 내가 먼저 액세스 토큰을 확인하고 아이디 토큰과 함께 액세스 토큰을 사용하는 방법에 대한도 생각 :

https://www.googleapis.com/oauth2/v3/tokeninfo?access_token=

하지만보다 안전한 클라이언트의 자격 증명 (모바일 앱, 웹 응용 프로그램을) 검증의 전 과정을 하는가?

+0

[Validate Google Id Token] (http://stackoverflow.com/questions/39061310/validate-google-id-token) –

답변

1

주먹은 내가 Google에서 작동하지 않는다고 말하면서 시작합니다. 그러나 나는 2012 년부터 Google Oauth2를 사용해 개발해 왔습니다. 잠시 후 나는 Google에이 질문 만 물었습니다.

새로 고침 토큰을 요청한 경우에만 새 액세스 토큰을 요청하는 것이 좋습니다. 서버가 잘못되면 서버가 오류를 반환합니다. 액세스 토큰을 가지고 있으면 서버가 오류를 반환하면 요청을 보냅니다.

모든 요청에 ​​대해 서버에 두 개의 요청을 보내는 것이 처음에는 유효성을 확인하는 데별로 중요하지 않습니다. 장기적으로 취하는 요청 중 적은 비율로 오류를 방지하기 만하면됩니다.

나는 id 토큰을 신경 쓰지 않고있다. Id 토큰은 jwt이므로 열 수 있어야합니다.

+0

답변을 주셔서 감사합니다.하지만 필요한 정보가 정확하지 않습니다. 액세스 토큰을 사용하는 것은 매우 명확합니다 : 나는 데이터를 얻기 위해 access_token을 보내고 모든 요청에 ​​대해 Google은 내 access_token을 검증합니다. 하지만 ID 토큰을 받으면 Google에 요청을 보낼 필요가 없습니다. 모든 세부 정보가 있기 때문입니다. 그러나 귀하의 대답이이 질문의 다른 vistiors에게 도움이 될 것이라 확신합니다. – nicq

+1

아마도 귀하의 질문을 이해하지 못했습니다. Google은 토큰을 로컬에서 확인하여 해당 토큰이 유효한지 확인합니다. 왜 당신은 그들의 권고를 따르지 않겠습니까? 내 요점은 액세스 토큰을 확인하고 tokeninfo는 아마도 당신이 아마 필요하지 않은 여분의 하중을 넣을 것입니다. – DaImTo

+0

네, JWT 토큰을 로컬에서 확인하는 것이 옳습니다. 추가 요청 (제공자 또는 데이터베이스)을 제한하는 JWT 토큰의 개념이라고 생각합니다. 그러나 백엔드에 HTTPS POST 요청과 함께 "공개"API를 통해 전송 된 ID 토큰을 처리하는 것이 안전한 지 궁금합니다. – nicq

관련 문제