
Bibliothèque Ruby implémentant le côté fournisseur de services SAML du SSO, gérant les requêtes d'authentification, la validation des réponses, les vérifications de signature XML et l'analyse des métadonnées IdP.
Les versions mineures et correctives de Ruby SAML peuvent introduire des changements incompatibles. Veuillez lire UPGRADING.md pour obtenir des conseils sur la mise à niveau vers les nouvelles versions de Ruby SAML.
CVE-2025-66568 et CVE-2025-66567. affectent la version ruby-saml < 1.18.0 (y compris 1.12.4), effectuez la mise à niveau vers 1.18.1
CVE-2025-54572 affecte la version ruby-saml < 1.18.1
Il existe des vulnérabilités critiques affectant ruby-saml < 1.18.0, deux d'entre elles permettent de contourner l'authentification SAML (CVE-2025-25291, CVE-2025-25292, CVE-2025-25293). Veuillez effectuer la mise à niveau vers une version corrigée (1.18.0)
Si vous pensez avoir découvert une vulnérabilité de sécurité dans cette gem, veuillez la signaler par e-mail au mainteneur : [email protected]
Merci aux sponsors suivants pour sécuriser l'écosystème open source :
Une API en temps réel pour accéder aux résultats de recherche Google. Elle gère les proxys, résout les captchas et analyse toutes les données structurées riches pour vous
La plateforme complète pour les développeurs afin de construire, mettre à l'échelle et livrer des logiciels sécurisés.
Simplifier la file d'attente de messages et le streaming. Laissez la gestion des serveurs aux experts, afin que vous puissiez vous concentrer sur la création de grandes applications.
La bibliothèque Ruby SAML sert à implémenter le côté client d'une autorisation SAML, c'est-à-dire qu'elle fournit un moyen de gérer l'initialisation de l'autorisation et les requêtes de confirmation provenant des fournisseurs d'identité.
L'autorisation SAML est un processus en deux étapes et vous êtes censé implémenter la prise en charge des deux.
Nous avons créé un projet de démonstration pour Rails 4 qui utilise la dernière version de cette bibliothèque : ruby-saml-example
ruby-saml fournit des outils pour aider à atténuer ce risque, mais il est
de votre responsabilité d'implémenter la logique nécessaire. Voir
Prévention des attaques par rejeu pour des conseils
supplémentaires.Les versions de Ruby suivantes sont couvertes par les tests CI :
Afin d'utiliser Ruby SAML, vous devrez installer la gem (soit manuellement, soit en utilisant Bundler), et inclure la bibliothèque dans votre application Ruby :
En utilisant Gemfile
# latest stable
gem 'ruby-saml', '~> 1.18.0'
# or track master for bleeding-edge
gem 'ruby-saml', :github => 'saml-toolkits/ruby-saml'
En utilisant RubyGems
gem install ruby-saml
Vous pouvez avoir besoin de la gem Ruby SAML complète :
require 'onelogin/ruby-saml'
ou simplement les composants requis individuellement :
require 'onelogin/ruby-saml/authrequest'
Cette gem utilise Nokogiri comme dépendance, qui a abandonné le support de Ruby 1.8.x dans Nokogiri 1.6. Lors de l'installation de cette gem sur Ruby 1.8.7, vous devrez vous assurer qu'une version de Nokogiri antérieure à 1.6 est installée ou spécifiée si ce n'est pas déjà fait.
Utilisation de Gemfile
gem 'nokogiri', '~> 1.5.10'
En utilisant RubyGems
gem install nokogiri --version '~> 1.5.10'
Lors du dépannage des problèmes d'intégration SAML, il vous sera extrêmement utile d'examiner la
sortie de la logique métier de ce gem. Par défaut, les messages de journal sont émis vers RAILS_DEFAULT_LOGGER
lorsque le gem est utilisé dans un contexte Rails, et vers STDOUT lorsque le gem est utilisé en dehors de Rails.
Pour remplacer le comportement par défaut et contrôler la destination des messages de journal, fournissez un objet Logger ruby au singleton de journalisation du gem :
OneLogin::RubySaml::Logging.logger = Logger.new('/var/log/ruby-saml.log')
C'est la première requête que vous recevrez du fournisseur d'identité. Elle atteindra votre application à une URL spécifique que vous avez annoncée comme votre point d'initialisation SAML. La réponse à cette initialisation est une redirection vers le fournisseur d'identité, qui peut ressembler à ceci (ignorez l'appel de méthode saml_settings pour l'instant) :
def init
request = OneLogin::RubySaml::Authrequest.new
redirect_to(request.create(saml_settings))
end
Si le SP sait qui doit être authentifié dans l'IdP, il peut fournir cette information comme suit :