2012-12-19 7 views
4

누구든지이 작업을 수행하는 방법에 대한 단서가 있습니까? 저는 기본적으로 OpenID에서 OAuth 로의 "Google과 연결"전략을 대체하려고합니다. 문제는 사용자가 새 OAuth 스키마에 따라 로그인 할 때 이전 사용자 (Google 오픈 ID의 사용자)를 식별하는 것입니다.개발자 : Google Open ID를 Google OAuth로 마이그레이션하십시오.

전자 메일 주소를 기본 키로 사용하는 실용적인 구현이 있는데, 개방형 ID 전략이이를 캡처하기 때문입니다. 문제는 OAuth 흐름에서 이메일을 요청하고 싶지 않다는 것입니다. 이상적인 가치는 단순히 Google 사용자 ID이지만 Open ID 전략은이를 포착하지 않는 것입니다.

따라서 https://www.google.com/accounts/o8/id?id=AfSCwGQ4PUaidXSQddJugXKLqU5V0MrXFhJM6UHybPw과 같은 ID 토큰을 열어서 Google ID를 얻을 수 있는지 이해하려고합니다.

UPDATE :이 마이그레이션을 수행 결국 어떻게 여기에 설명 - http://softwareas.com/migrating-user-accounts-from-google-openid-to-google-oauth-to-google-plus

+1

[이 링크] (http://andrewhorsman.net/ruby-oauth-google-calendar-data/)와 Will Norris의 답변이 도움이 될 수 있습니다. 당신이 그것을 작동 시키도록 관리한다면 나중에 당신의 솔루션을 여기에 게시 할 수 있다면 좋을 것입니다.나는 정말로 감사 할 것입니다. – Ashitaka

답변

3

구글은 파티에 의존 당 고유 명시 적으로 사용자에 대한 상호 관련 식별자를 은폐하도록 설계 오픈 ID에 대한 directed identifiers 사용합니다. 따라서 짧은 대답은 주어진 Google OpenID에 해당하는 Google ID를 얻을 방법이 없다는 것입니다.

그러나 하나의 옵션으로 Google의 OpenID+OAuth Hybrid 흐름을 사용할 수 있습니다. 이를 통해 일반 OpenID 흐름의 일부로 OAuth 토큰을 가져올 수 있습니다. OAuth2 Login API에서 사용자의 ID를 가져와 기존 계정과 연결할 수 있습니다. 기존 사용자 모두에 대해이 작업을 완료했으면 OAuth2 로그인을 직접 사용으로 전환하십시오.

물론이 방법의 트릭은 모든 사용자가 다시 로그인하여 새로운 흐름을 통해 사용자를 보낼 수있게하는 것입니다. 계정을 이전하기 위해 얼마나 오래 기다려야하는지, 이메일을 보내서 기존 사용자를 기꺼이 도발하고 강제로 비밀번호 재설정과 마찬가지로 다시 로그인하도록 요청하는지 여부가 결정됩니다.

+0

이 답변을 주셔서 감사합니다. 여기서 도전해야 할 것은 모든 사람 (신규 및 기존)에 대해 하나의 Connect With Google을 보여주고 싶다는 것입니다. 따라서 OpenID + OAuth 플로우는 새로운 사용자가 가고 싶어하지 않을 것입니다. 다행스럽게도 지금까지 Google Open ID를 통해 많은 사용자가 연결 한 것은 아니므로 해당 사용자를위한 맞춤식 마이그레이션 과정을 만들어 메일 링 링크로 보냅니다. – mahemoff

4

오늘은 사용자가 다른 승인 페이지를 보지 못하게하는 전략이 준비되어 있지 않습니다.

그러나 OAuth1 기반 하이브리드 플로우를 시도하지 않고 모든 레거시 코드를 서버에 추가해야하는 대신 전자 메일 주소를 간단히 연결하고 OAuth2 로그인으로 이동하는 것이 좋습니다. 나는 그들이 보통 계정 복구를 원하기 때문에 이메일 주소를 요구하는 사이트의 대다수와 같다고 가정합니다. 서명 된 매개 변수 중 하나 인 OpenId에서 전자 메일 주소를 가져 오십시오.

그런 다음 userinfo.email 범위와 OAuth2 https://developers.google.com/accounts/docs/OAuth2Login을 사용하면 개발자의 고통을 줄여 마이그레이션 할 수 있습니다.

또한 OpenIDConnect에 대한 지원을 추가하는 과정에서 login_hint 매개 변수를 지원하므로 & login_hint = [email protected]을 인증 URL에 추가하면 승인 URL이 맞다. 이것은 현재 문서화되어 있지 않지만 시도해 보는 것이 유용 할 수 있습니다. 사용자의 브라우저는 여러 계정으로 Google에 로그인 할 수 있으며 올바른 계정을 얻으려고합니다. OAuth2 흐름에서 가져온 이메일을 항상 확인하여 일치하는지 확인하십시오. '힌트'입니다.

사용자는 OAuth2에 대해 다시 인증을 받아야하지만 향후이 재 인증을 건너 뛸 계획입니다. 요점은 OAuth2를 사용하여 계획하고 곧 원활한 마이그레이션을 제공하기를 원하며 지원되는 프로토콜을 사용하게됩니다.

+0

David에게 감사드립니다. 나는 이메일을 요구함으로써이 일을 할 수 있지만, 나는 그것을 요구하는 것을 피하려고 노력했다. – mahemoff

+0

그러나 이것은 사용자가 과거 사용자의 이메일 주소로 Google 계정을 생성 한 다음 로그인 할 수 있기 때문에 위험합니다. – Doug