
Ruby-Bibliothek, die die SAML-Service-Provider-Seite von SSO implementiert und Authn-Anfragen, Antwortvalidierung, XML-Signaturprüfungen und IdP-Metadaten-Parsing übernimmt.
Minor- und Patch-Versionen von Ruby SAML können brechende Änderungen einführen. Bitte lesen Sie UPGRADING.md für Anleitungen zum Upgrade auf neue Ruby SAML-Versionen.
CVE-2025-66568 und CVE-2025-66567. betrifft Version ruby-saml < 1.18.0 (einschließlich 1.12.4), Upgrade auf 1.18.1
CVE-2025-54572 betrifft Version ruby-saml < 1.18.1
Es gibt kritische Schwachstellen, die ruby-saml < 1.18.0 betreffen, zwei davon ermöglichen die Umgehung der SAML-Authentifizierung (CVE-2025-25291, CVE-2025-25292, CVE-2025-25293). Bitte führen Sie ein Upgrade auf eine korrigierte Version (1.18.0) durch.
Wenn Sie glauben, eine Sicherheitslücke in diesem Gem entdeckt zu haben, melden Sie diese bitte per E-Mail an den Maintainer: [email protected]
Dank an die folgenden Sponsoren für die Sicherung des Open-Source-Ökosystems:
Eine Echtzeit-API für den Zugriff auf Google-Suchergebnisse. Sie verwaltet Proxys, löst Captchas und parst alle umfangreichen strukturierten Daten für Sie
Die komplette Entwicklerplattform zum Erstellen, Skalieren und Bereitstellen sicherer Software.
Vereinfachung von Message Queuing und Streaming. Überlassen Sie die Serververwaltung den Experten, damit Sie sich auf die Entwicklung großartiger Anwendungen konzentrieren können.
Die Ruby SAML-Bibliothek dient der Implementierung der Client-Seite einer SAML-Autorisierung, d. h. sie bietet eine Möglichkeit zur Verwaltung von Autorisierungsinitialisierungs- und -bestätigungsanfragen von Identity Providern.
Die SAML-Autorisierung ist ein zweistufiger Prozess, und es wird erwartet, dass Sie die Unterstützung für beide implementieren.
Wir haben ein Demo-Projekt für Rails 4 erstellt, das die neueste Version dieser Bibliothek verwendet: ruby-saml-example
ruby-saml-Bibliothek bietet Werkzeuge, um dieses Risiko zu mindern, aber es liegt
in Ihrer Verantwortung, die notwendige Logik zu implementieren. Siehe
Replay-Angriffe verhindern für zusätzliche
Anleitungen.Die folgenden Ruby-Versionen werden durch CI-Tests abgedeckt:
Um Ruby SAML zu verwenden, müssen Sie das Gem installieren (entweder manuell oder mit Bundler) und die Bibliothek in Ihrer Ruby-Anwendung einbinden:
Mit Gemfile
# latest stable
gem 'ruby-saml', '~> 1.18.0'
# or track master for bleeding-edge
gem 'ruby-saml', :github => 'saml-toolkits/ruby-saml'
Verwendung von RubyGems
gem install ruby-saml
Sie benötigen möglicherweise das gesamte Ruby SAML gem:
require 'onelogin/ruby-saml'
oder nur die erforderlichen Komponenten einzeln:
require 'onelogin/ruby-saml/authrequest'
Dieses Gem verwendet Nokogiri als Abhängigkeit, welche die Unterstützung für Ruby 1.8.x in Nokogiri 1.6 eingestellt hat. Bei der Installation dieses Gems auf Ruby 1.8.7 müssen Sie sicherstellen, dass eine Version von Nokogiri vor 1.6 installiert oder angegeben wird, falls dies noch nicht geschehen ist.
Verwendung von Gemfile
gem 'nokogiri', '~> 1.5.10'
Verwendung von RubyGems
gem install nokogiri --version '~> 1.5.10'
Bei der Fehlersuche in SAML-Integrationsproblemen ist es äußerst hilfreich, die
Ausgabe der Geschäftslogik dieses Gems zu untersuchen. Standardmäßig werden Log-Nachrichten an RAILS_DEFAULT_LOGGER
gesendet, wenn das Gem in einem Rails-Kontext verwendet wird, und an STDOUT, wenn das Gem außerhalb von Rails verwendet wird.
Um das Standardverhalten zu überschreiben und das Ziel der Log-Nachrichten zu steuern, übergeben Sie ein Ruby-Logger-Objekt an das Logging-Singleton des Gems:
OneLogin::RubySaml::Logging.logger = Logger.new('/var/log/ruby-saml.log')
Dies ist die erste Anfrage, die Sie vom Identity Provider erhalten. Sie erreicht Ihre Anwendung unter einer bestimmten URL, die Sie als Ihren SAML-Initialisierungspunkt angekündigt haben. Die Antwort auf diese Initialisierung ist eine Weiterleitung zurück zum Identity Provider, die etwa so aussehen kann (ignorieren Sie den saml_settings-Methodenaufruf vorerst):
def init
request = OneLogin::RubySaml::Authrequest.new
redirect_to(request.create(saml_settings))
end
Wenn der SP weiß, wer im IdP authentifiziert werden soll, kann er diese Information wie folgt bereitstellen:
def init
request = OneLogin::RubySaml::Authrequest.new
saml_settings.name_identifier_value_requested = "[email protected]"
saml_settings.name_identifier_format = "urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress"
redirect_to(request.create(saml_settings))
end