Funzionamento corretto dei messaggi di benvenuto con un provider di attestazioni personalizzate in SharePoint 2010
Articolo originale pubblicato giovedì 3 maggio 2012
Un buon "amico del blog", Israel V., è stato così gentile da farmi notare recentemente che quasi tutti gli esempi di codice disponibili per i provider di attestazioni personalizzate includono un piccolo difetto fastidioso. Se si seguono questi esempi, non vengono inviati i messaggi di benvenuto generalmente recapitati quando si aggiunge una nuova persona a un sito. Naturalmente anch'io ho le mie responsabilità per questo problema, come chiunque altro. Ho deciso quindi di esaminare la situazione in modo più accurato e di rivedere rapidamente il codice sviluppato da Israel per ovviare a questo problema.
In poche parole, questo problema si verifica quando si aggiunge un utente a una raccolta siti per la prima volta. Dal momento che non è stata mai eseguita una sincronizzazione dei profili, a tale utente non è associato alcun indirizzo di posta elettronica. Partendo dallo scenario più semplice possibile, la soluzione in questo caso consiste nel reperire un indirizzo di posta elettronica dell'utente nel momento in cui viene aggiunto e inserirlo nella proprietà appropriata nella classe PickerEntity. Seguono alcuni dettagli.
DOVE reperire l'indirizzo di posta elettronica dipende totalmente dal provider di attestazioni. Se si ottengono i dati da Active Directory, sarà possibile eseguire una query su Active Directory per ottenere l'indirizzo. Se invece si utilizza SAML e l'indirizzo di posta elettronica corrisponde all'attestazione d'identità, sarà sufficiente riutilizzare questi dati. Sta a voi quindi individuare la soluzione appropriata.
QUANDO utilizzarlo dipende dal momento in cui viene chiamato il metodo FillResolve. Come è noto, questo metodo può essere chiamato quando si aggiunge una voce tramite Selezione utenti o quando si digita un valore nel controllo di digitazione e si fa clic sul pulsante di risoluzione. Come illustrato in molti dei miei esempi di codice, durante tale processo viene creata un'istanza della classe PickerEntity in modo che sia possibile aggiungerla all'elemento List<PickerEntity> che viene passato nel metodo.
COME aggiungerlo si risolve semplicemente impostando la proprietà nell'istanza di PickerEntity come indicato di seguito:
//needed to make welcome emails work:
pe.EntityData[PeopleEditorEntityDataKeys.Email] = "steve@stevepeschka.com";
In questo esempio "pe" è semplicemente l'istanza della classe PickerEntity che ho creato e restituito nel metodo FillResolve.
Questo è tutto. Il problema maggiore potrebbe essere reperire l'indirizzo di posta elettronica. Dopo aver ottenuto l'indirizzo, è facile aggiungerlo alla classe PickerEntity per garantire il corretto funzionamento dei messaggi di benvenuto. Ho testato questa soluzione e verificato che a) non venissero inviati messaggi di benvenuto con il mio provider di attestazioni personalizzate originale e b) i messaggi VENISSERO INVIATI dopo aver incorporato questa modifica. Grazie ancora a Israel V. per aver segnalato questo problema e aver fornito un esempio di codice.
Questo è un post di blog localizzato. L'articolo originale è disponibile in Getting Welcome Emails to Work with a Custom Claims Provider in SharePoint 2010.