0

Ruby on Rails에서 Google Apps로 OmniAuth OpenID를 수행하려고합니다. ": identifier => 'https://www.google.com/accounts/o8/site-xrds?hd=example.com'"을 지정하면 즉시 사용 가능합니다. example.com은 타겟 사용자가 유입 된 도메인입니다.Omniauth-openid에 대한 검색을 비활성화하고 OpenID 서버를 지정하는 방법

문제없이/인증/구글에 액세스 할 때 사용자는 Google에 리디렉션 할 수 있으며,이 openid.identity 구글에서 반환 할 수 있습니다

... &openid.identity=http://example.com/openid?id=xxxxxxxxxxxxxxxxxxxxxxx ... 

그러나, 나는 작업을하고있는 example.com을 수행합니다 올바른 "rel = 'openid2.provider'"< 링크/> 태그가 http://example.com/에 설정되어 있지 않으므로 omniauth-openid가 Google에서 다시 확인하려고 시도 할 때 검색이 실패합니다.

자동 검색을 수행하지 않고 https://www.google.com/a/example.com/o8/ud?be=o8을 서버로 직접 정의 할 수 있도록 기본 검색 동작을 해결하는 빠르고 깨끗한 방법이 있습니까?

감사합니다.

답변

0

나는 omniauth-openid가 ruby-openid를 사용한다고 생각합니다.

require 'gapps_openid' 

Google Apps에 그 보석이 제공하는 것입니다 약간 다른 검색 프로토콜을 가지고 요청을하기 전에 어딘가에

gem install ruby-openid-apps-discovery 

그런 던져 : 그렇다면, 당신은 쉽게 작업을 얻을 수 있어야합니다 .

+0

고마워요! 이것은 내가 원하는 것입니다. – jiehanzheng

0

Steve가 추천 한 보석을 사용하기 전에 전체 검색 프로세스를 로컬에서만 수행 할 수있는 해결 방법을 생각해 냈습니다. 일부 사람들에게는 유용 할 수 있습니다.

  1. 이/etc/hosts 파일에서 127.0.0.1 example.com 같은 줄을 추가합니다 : 당신은 단지 하나의 Google Apps 도메인의 사용자가 동의하는 경우에 할 수 있습니다.
  2. 가의 nginx 같은 가벼운 HTTP 서버를 설정, openid (들이게 추가하지 않음)라는 파일을 만들고, < 링크에 rel = "openid2.provider"...이 > 태그를 추가합니다.

이것은 애플리케이션이 외부 https 서버로 일부 요청을 보내지 않도록하기 때문에 ruby-openid-apps-discovery를 사용하는 것보다 약간 빠릅니다.