Sto cercando di integrare il nostro Shibboleth con la nostra istanza di Discourse. Al momento il login funziona, ma ricevo dati errati (nome, email, ecc.).
Dato che il nome amichevole si ripete per ogni attributo, non sono sicuro di come impostare il mapping. Qualcuno ha un’idea su come gestire questa situazione?
Mi sono imbattuto nello stesso problema durante il test dell’integrazione SAML e alla fine sono riuscito a farlo funzionare. Con i log abilitati, controlla il contenuto di @attributes, quelle sono le chiavi effettive di cui hai bisogno per il mapping e non il nome visualizzato. Corrispondono all’attributo Name dai dati XML. Nel mio caso, il mapping all’interno di app.yml è diventato:
È anche importante ricompilare dopo le modifiche alla configurazione. Dopo averlo fatto, ha mappato correttamente il valore dell’email dalla mia risposta SAML.
Probabilmente non è il posto giusto, ma solo per aggiungere, avrai bisogno di email, name, first_name, last_name e uid come attributi di Discourse per poter utilizzare il plugin SAML.
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
questa parte del codice (tieni presente che non sono un programmatore Ruby) suggerisce che è necessario mappare tutti gli attributi ai tuoi attributi affinché il sistema possa funzionare… Proverò a testare queste informazioni (ho un problema al momento con il plugin SAML e sto cercando di indagare sui problemi).