Full name mapping when using SAML

Hi there,

does anyone know how to map the full name when using SAML as login method?
My SAML response looks like this and I can map any other other attribute in my IdP if necessary:

<samlp:Response xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol" 
    xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion" Destination="https://logon.xyz.de/auth/saml/callback" ID="idLwrewprewewGG1wewe0X4VZKDDby1Htv8I" InResponseTo="_ade6fd8b-0ce0-48d0-afff-b0ad3375d8e6" IssueInstant="2018-10-18T08:05:37Z" Version="2.0">
    <saml:Issuer>https://logon.xyz.de/nidp/saml2/metadata</saml:Issuer>
    <samlp:Status>
        <samlp:StatusCode Value="urn:oasis:names:tc:SAML:2.0:status:Success"/>
    </samlp:Status>
    <saml:Assertion ID="id9sd5jjrejb3ererIZCJkrYjoG9_PI0" IssueInstant="2018-10-18T08:05:37Z" Version="2.0">

        ...

    <saml:AttributeStatement>
        <saml:Attribute xmlns:xs="http://www.w3.org/2001/XMLSchema" 
            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="name" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:basic">
            <saml:AttributeValue xsi:type="xs:string">USERID</saml:AttributeValue>
        </saml:Attribute>
        <saml:Attribute xmlns:xs="http://www.w3.org/2001/XMLSchema" 
            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="last_name" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:basic">
            <saml:AttributeValue xsi:type="xs:string">Surname</saml:AttributeValue>
        </saml:Attribute>
        <saml:Attribute xmlns:xs="http://www.w3.org/2001/XMLSchema" 
            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="first_name" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:basic">
            <saml:AttributeValue xsi:type="xs:string">Givenname</saml:AttributeValue>
        </saml:Attribute>
        <saml:Attribute xmlns:xs="http://www.w3.org/2001/XMLSchema" 
            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="email" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:basic">
            <saml:AttributeValue xsi:type="xs:string">mail@example.org</saml:AttributeValue>
        </saml:Attribute>
    </saml:AttributeStatement>
</saml:Assertion>
</samlp:Response>

Regards,
Thilo

Für alle anderen, die nach einer Lösung suchen:

Wir hatten das gleiche Problem und fanden nur eine Lösung, als wir uns den Quellcode angesehen haben:

fullName wird ignoriert.
Sie müssen in Ihrem Identitätsanbieter (wir haben Keycloak verwendet) eine Zuordnung zu den Feldern firstName und lastName für Discourse haben.

2 „Gefällt mir“

Danke, dass Sie sich die Zeit genommen haben, sich den Code anzusehen! Das sieht für mich nach einem Fehler aus – wir prüfen den fullName und ersetzen ihn dann durch firstName lastName. Zeile 133 in diesem Ausschnitt ist völlig nutzlos :thinking:

Ich habe diese Woche sowieso am SAML-Plugin gearbeitet, also hier ist eine Korrektur:

Sobald das zusammengeführt ist, wird fullName korrekt priorisiert.

3 „Gefällt mir“

@david Danke für die schnelle Korrektur!

Das sieht für mich nach einem Fehler aus – wir prüfen den fullName und ersetzen ihn dann durch firstName lastName. Zeile 133 in diesem Ausschnitt ist völlig nutzlos.

Ich hatte den gleichen Eindruck, war mir aber nicht sicher, da ich mit der Ruby-Syntax nicht vertraut bin…

2 „Gefällt mir“