2 Stimmen

Einloggen mit WebFinger und OpenID

Ich spiele mit WebFinger herum und versuche, eine kleine Rails-App zu erstellen, die es einem Benutzer ermöglicht, sich mit nichts anderem als seinem WebFinger-Konto anzumelden. Ich kann mich erfolgreich mit dem Finger anmelden und erhalte eine XRD-Datei mit dem folgenden Schnipsel zurück:

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

Für mich heißt das: "Ich habe eine OpenID 2.0-Anmeldung bei der URL: http://www.google.com/profiles/{redacted} ". Wenn ich jedoch versuche, mich mit dieser URL anzumelden, erhalte ich die folgende Fehlermeldung

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)):

Wenn ich die Profil-URL durch ' https://www.google.com/accounts/o8/id ', funktioniert die Anmeldung einwandfrei.

hier ist der Code, den ich verwende (ich verwende RedFinger als Plugin und JanRain's ruby-openid, installiert ohne das Gem)

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

Ist es möglich, die URL, die ich von meinem WebFinger erhalten habe, für die Anmeldung mit OpenID zu verwenden?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X