Skip to content

italia/spid-rails

Repository files navigation

spid-rails Build Status

Autenticazione SPID per Ruby on Rails. Questa gemma si appoggia alla gemma ruby-saml.

Cosa c'è e cosa manca

  • Creazione gemma
  • Applicazione demo funzionante con login tramite il server test idp.spid.gov.it repository: https://github.com/rubynetti/rubynetti-rails
  • Login tramite redirect
  • Login tramite post
  • Sistema di testing automatico
  • Sistema di configurazione
  • Integrazione con omniauth
  • Integrazione o esempio di integrazione con devise
  • Configurazione richiesta attributi utente

Installazione

Aggiungere nel Gemfile

gem 'spid-rails'

ed eseguire

$ bundle

Configurazione

Per creare il file di configurazione:

$ rails g spid:rails:config

che creerà il file config/initializer/spid-rails.rb con la configurazione default.

Una volta creata la configurazione bisogna aggiungere il middleware dopo il middleware di gestione della sessione. In config/application.rb

# config/application.rb

module MyApplication
  class Application < ::Rails::Application
    config.middleware.insert_after(
      ::ActionDispatch::Session::CookieStore,
      ::Spid::Rack
    )
  end
end

Questa gemma è un wrapper della gemma spid-ruby con funzionalità per semplificare l'utilizzo con rails

Helpers

La gemma fornirà una serie di helpers per la generazione dei paths:

spid_login_path

spid_login_path(idp_name: idp_entity_id, authn_context: Spid::L1, attribute_service_index: 0)

che genera un url per iniziare il processo di autenticazione con un identity provider:

  • idp_name: Obbligatorio, è l'entity_id dell'IdP con cui vogliamo instaurare l'autenticazione
  • authn_context: E' il valore del tipo di autenticazione richiesta. Default: https://www.spid.gov.id/L1
  • attribute_service_index: Nel caso in cui l'applicazione disponga di più AttributeConsumingService, l'indice del servizio che vogliamo utilizzare. Default: 0

spid_logout_path

spid_logout_path(idp_name: idp_entity_id) Come sopra, crea un link per iniziare il processo di logout verso l'IdP

License

The gem is available as open source under the terms of the MIT License.