2010-04-05 1 views
2

Я возился с WebFinger и пытаюсь создать небольшое приложение для рельсов, которое позволяет пользователю входить в систему, используя только свою учетную запись WebFinger. Я могу успешно теребить себя, и я вернусь файл ДРЛ со следующим фрагментом:Вход в систему с WebFinger и OpenID

Link rel="http://specs.openid.net/auth/2.0/provider" href="http://www.google.com/profiles/{redacted}"/ 

Который, мне, гласит: «У меня есть 2.0 логин OpenID на URL: http://www.google.com/profiles/{redacted}». Но когда я пытаюсь использовать этот URL, чтобы войти, я получаю следующую ошибку

OpenID::DiscoveryFailure (Failed to fetch identity URL http://www.google.com/profiles/{redacted} : Error encountered in redirect from http://www.google.com/profiles/{redacted}: Error fetching /profiles/{Redacted}: Connection refused - connect(2)):

Когда я заменить профиль URL с «https://www.google.com/accounts/o8/id», то Войти отлично работает.

вот код, который я использую (я использую RedFinger как плагин, и рубиново-OpenID JanRain в, установленный без камня)

require "openid" 
require 'openid/store/filesystem.rb' 

class SessionsController < ApplicationController 
    def new 
    @session = Session.new 
    #render a textbox requesting a webfinger address, and a submit button 
    end 

    def create 
####################### 
# 
# Pay Attention to this section right here 
# 
####################### 
    #use given webfinger address to retrieve openid login 
    finger = Redfinger.finger(params[:session][:webfinger_address]) 
    openid_url = finger.open_id.first.to_s 
    #openid_url is now: http://www.google.com/profiles/{redacted} 

    #Get needed info about the acquired OpenID login 
    file_store = OpenID::Store::Filesystem.new("./noncedir/") 
    consumer = OpenID::Consumer.new(session,file_store) 
    response = consumer.begin(openid_url) #ERROR HAPPENS HERE 

    #send user to OpenID login for verification 
    redirect_to response.redirect_url('http://localhost:3000/','http://localhost:3000/sessions/complete') 
    end 

    def complete 
    #interpret return parameters 
    file_store = OpenID::Store::Filesystem.new("./noncedir/") 
    consumer = OpenID::Consumer.new(session,file_store) 
    response = consumer.complete params 
    case response.status 
    when OpenID::SUCCESS 
     session[:openid] = response.identity_url 
     #redirect somehwere here 
    end 
    end 
end 

Можно ли мне использовать URL я полученные от моего WebFinger для входа в OpenID?

+0

«Соединение отказано» при получении URL-адреса на www.google.com? Это очень странно. – keturn

ответ

2

Да, абсолютно. Хотя я еще не выпустил исходный код, вы можете проверить это на webfinger.org. Реализация в основном по описанию. К сожалению, я не уверен, почему ваш пример входа в систему не работает.

+0

ха-ха, вот где я тестировал вещи :) Теперь мне просто нужно выяснить, почему у системы возникают проблемы с получением адреса, который я ему даю – Ryan

+0

Эй, когда я вхожу на ваш сайт, похоже, m перенаправляется на https://www.google.com/accounts/o8/id Знаете ли вы, переадресовываете ли вы туда, или если это google reredirecting? – Ryan

+0

google.com/accounts/o8/id является/является общим идентификатором OpenID для учетных записей Google OpenID. Если я правильно помню, это идентификатор, который webfinger.org использует по умолчанию для учетных записей GMail. –

 Смежные вопросы

  • Нет связанных вопросов^_^