Je ne comprends pas la correspondance correcte des attributs avec le plugin SAML

Hello,

I am trying to integrate our shibboleth with our discourse instance. For now logging in works but I am getting the wrong data (name, email, etc…)

here is part of the data coming from the SSO

    <saml2:Attribute FriendlyName="givenName" Name="urn:oid:2.5.4.42" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri">
      <saml2:AttributeValue>Joao Miguel</saml2:AttributeValue>

here is the error log:

SAML Debugging: saml_auth: {:uid=>"AAdzZWNyZXQ0uudwQFYHs1n7nrvB/A4t4l6q+6aAXInZRL4XIO+mnEEEq4t8UwBnzJRh50mnTGDsQAPvWThJNaUNR6smCochT1I2oXwvyoU4lQG+5hbVmCvkkmYDPOujrvgNloXWNg==", :info=>{"name"=>nil, "email"=>nil, "first_name"=>nil, "last_name"=>nil, "nickname"=>nil}.......   @attributes={............."urn:oid:2.5.4.42"=>["Joao Miguel"]

I would say the issue has to do with the FriendlyName, as it doesnt match any of the options in saml_authenticator.rb:

statements = “name:name|email:email,mail|first_name:first_name,firstname,firstName|last_name:last_name,lastname,lastName|nickname:screenName”

Since friendly name repeats itself for every atribute I am not sure how to make the mapping. Has anyone an idea of how to deal with this?

Thank you

Avez-vous réussi à faire fonctionner cela ?

Bonjour @Ivan.bacher et @JoreisPy , des succès dans la cartographie des bons attributs via les configurations discourse-saml ?

J’ai essayé d’utiliser cette configuration dans le plugin mais sans succès jusqu’à présent :

Passez une bonne journée ! :slight_smile:

J’ai rencontré le même problème en testant l’intégration SAML et j’ai finalement réussi à la faire fonctionner. Avec les journaux activés, vérifiez le contenu de @attributes, ce sont les clés réelles dont vous avez besoin pour le mappage et non le nom convivial. Ils correspondent à l’attribut Name des données XML. Dans mon cas, le mappage dans app.yml est devenu :

DISCOURSE_SAML_REQUEST_ATTRIBUTES: "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress"
DISCOURSE_SAML_ATTRIBUTE_STATEMENTS: "email:http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress"

Il est également important de reconstruire après les modifications apportées à la configuration. Après cela, il a correctement mappé la valeur de l’e-mail de ma réponse SAML.

Merci d’avoir partagé cet exemple. D’après discourse-saml/config/locales/server.en.yml at main · discourse/discourse-saml · GitHub, le format exact n’est pas clair. De plus, pour les futurs plugins SAML, il est possible de mapper plus d’un attribut à une variable Discourse, donc le format indique essentiellement :

‘<variable_Discourse>:<attribut_SAML1>,<attribut_SAML2>’

1 « J'aime »

Probablement pas le bon endroit mais juste pour ajouter, vous aurez besoin de email, name, first_name, last_name et uid comme attributs Discourse pour pouvoir utiliser le plugin SAML.

De plus

def attribute_statements
    result = {}
    statements =
      "name:fullName,name|email:email,mail|first_name:first_name,firstname,firstName|last_name:last_name,lastname,lastName|nickname:screenName"
    custom_statements = setting(:attribute_statements)

    statements = "#{statements}|#{custom_statements}" if custom_statements.present?

    statements
      .split("|")
      .map do |statement|
        attrs = statement.split(":", 2)
        next if attrs.count != 2
        (result[attrs[0]] ||= []) << attrs[1].split(",")
        result[attrs[0]].flatten!
      end

    result
  end

cette partie du code (sachant que je ne suis pas un programmeur Ruby) suggère que vous devez mapper tous les attributs à vos attributs pour que le système fonctionne… J’essaierai de tester cette information (j’ai un problème au moment avec le plugin SAML et j’essaie d’enquêter sur les problèmes).