Ich bekomme keine ordnungsgemäße Zuordnung der Attribute mit dem SAML-Plugin

Hallo,

ich versuche, unseren Shibboleth mit unserer Discourse-Instanz zu integrieren. Die Anmeldung funktioniert zwar, aber ich erhalte falsche Daten (Name, E-Mail usw.).

Hier ist ein Teil der Daten, die vom SSO kommen:

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

Hier ist das Fehlerprotokoll:

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"]

Ich vermute, das Problem liegt beim FriendlyName, da er nicht mit einer der Optionen in saml_authenticator.rb übereinstimmt:

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

Da sich der FriendlyName für jedes Attribut wiederholt, bin ich mir nicht sicher, wie die Zuordnung erfolgen soll. Hat jemand eine Idee, wie man damit umgehen kann?

Vielen Dank

Konnten Sie das zum Laufen bringen?

Hallo @Ivan.bacher und @JoreisPy, gibt es Erfolge beim Zuordnen der richtigen Attribute über die discourse-saml-Konfigurationen?

Ich habe versucht, diese Konfiguration im Plug-in zu verwenden, aber bisher ohne Erfolg:

Einen schönen Tag noch! :slight_smile:

Ich bin auf dasselbe Problem gestoßen, als ich die SAML-Integration getestet habe, und es endlich zum Laufen gebracht. Wenn die Protokolle aktiviert sind, überprüfen Sie den Inhalt von @attributes. Dies sind die tatsächlichen Schlüssel, die Sie für die Zuordnung benötigen, und nicht der Anzeigename. Sie entsprechen dem Name-Attribut aus den XML-Daten. In meinem Fall wurde die Zuordnung in app.yml wie folgt vorgenommen:

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"

Es ist auch wichtig, nach Änderungen an der Konfiguration neu zu erstellen. Danach wurde der E-Mail-Wert aus meiner SAML-Antwort ordnungsgemäß zugeordnet.

Danke für das Teilen des Beispiels. Aus discourse-saml/config/locales/server.en.yml at main · discourse/discourse-saml · GitHub ist nicht klar, was das genaue Format bedeutet.
Zusätzlich hat das zukünftige SAML-Plugin die Möglichkeit, mehr als ein Attribut der Discourse-Variable zuzuordnen, daher gibt das Format im Grunde an:

‘<Discourse_variable>:<SAML_attribute1>,<SAML_attribute2>’

Wahrscheinlich ist dies nicht der richtige Ort, aber nur zur Ergänzung: Sie benötigen E-Mail, Name, Vorname, Nachname und UID als Discourse-Attribute, um das SAML-Plugin verwenden zu können.

Zusätzlich

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

Dieser Teil des Codes (beachten Sie, dass ich kein Ruby-Programmierer bin) legt nahe, dass Sie alle Attribute Ihren Attributen zuordnen müssen, damit das System funktionieren kann … Ich werde versuchen, diese Informationen zu testen (ich habe im Moment ein Problem mit dem SAML-Plugin und versuche, die Probleme zu untersuchen).