2011-10-24 12 views
6

Ecco lo scenario:AZURE ACS - Windows Live ID: come ottengo l'e-mail e il nome dell'utente autenticato?

MVC 3 applicazione runing nel colore Azzurro Dev favorevole all'ambiente del Autenticazione in AZURE ACS implementato allo stesso modo trovato qui http://msdn.microsoft.com/en-us/library/hh127794.aspx

Sto cercando di ottenere il nome degli utenti, e-mail, ma posso Troviamo un modo per configurare la "Regola richiesta", in modo da ottenere un valore di testo libero, invece ottengo una stringa che sembra essere crittografata. Quindi posso configurare la regola in modo che ottenga il testo in chiaro? O posso decrittografare il valore restituito? È possibile o sto guardando la cosa sbagliata qui.

Grazie

risposta

10

IIRC, è contro la diretta sulla privacy di Windows per rilasciare il nome o l'indirizzo email dell'utente come crediti (a differenza di Gmail o Yahoo!). Pertanto, non è possibile ottenere tali attestazioni da Live (a meno che non si tratti di Microsoft).

L'unico valore che è possibile ottenere è chiamato un identificativo del nome. È univoco per dominio RP (vale a dire non è un singolo valore per LiveID, ma differisce per dominio). Anche questo è intenzionale, quindi non è possibile avere siti Web diversi che collaborano per tenere traccia di un utente. In genere, si ottiene l'identificatore del nome (chiamato PUID) e quindi lo si inserisce nel proprio database da qualche parte in modo da sapere che l'hai già visto in precedenza. Quindi l'utente si registra al tuo fianco con nome, email, ecc. E lo colleghi al PUID.

D'altra parte, LiveId supporta anche OAuth2, quindi è possibile ottenere dall'utente qualsiasi informazione del profilo utente (con il suo consenso). Vedi here.

+0

Cosa ti impedisce di costruire uno STS personalizzati con poche righe di codice che utilizza il lato server connettersi API per aggiungere e-mail + full-name come crediti aggiuntivi? http://msdn.microsoft.com/en-us/library/hh243649.aspx – Nariman

+0

Elenca tutti i provider e i relativi dettagli in Azure ACS http://msdn.microsoft.com/en-us/library/gg185971.aspx e no, come dunnry ha detto che puoi ottenere solo le richieste nameidentidier e identiyprovider da Windows Live, vedere questo per la verifica. http://msdn.microsoft.com/en-us/library/gg185944.aspx –

1

possibile, ma richiede un po 'di codice per uno STS personalizzati:

https://gist.github.com/1867792

codice non costruisce e le dipendenze non sono inclusi ... ma è in gran parte basato fuori di un sito d'avviamento precoce thinktecture portato su MVC4 con le modifiche mostrate sopra.

8

Questo è un totale # FAIL da parte di Microsoft. Gli utenti, quando accedono al tuo sito utilizzando Google o altri provider, devono prima accettare. Quindi passano semplicemente le informazioni di base al sito, il sito lo usa e tutti sono felici.

BTW si può ottenere dall'utente con pagine di codice dietro le quinte ma non è senza soluzione di continuità per l'utente, richiede un processo manuale, ma ciò nonostante il sistema LiveID non è più sicuro per fare ciò, è semplicemente rotto.

-1

È possibile grazie a iFrame Trick.

<iframe src="https://login.live.com/login.srf?wa=wsignout1.0" frameborder="0"></iframe> 

questo non ti reindirizzamento alla pagina di MSN

0

Questo blog discute la creazione di una finestra attivo personalizzato STS provider e quindi incorporando come un provider di identità di fiducia in SharePoint.

http://blogs.technet.com/b/speschka/archive/2012/03/01/finally-a-useful-way-to-federate-with-windows-live-and-sharepoint-2010-using-oauth-and-saml.aspx

Purtroppo sembra che il team di Azure proprio non sembra capire che le persone potrebbero voler ottenere effettivamente qualcosa di utile di ritorno da Windows Live ID.

È inoltre possibile rimuovere Windows live Id come opzione per l'accesso facendo clic su di esso nei provider di identità e quindi deselezionando l'associazione con il proprio relying party.

(Davvero strano che non si può scegliere di eliminarlo = P)

0

Ci sono un paio di tecniche per interrogare i server live per ulteriori informazioni sugli utenti autenticati (a condizione, naturalmente, che hanno dato il consenso) . Puoi eseguire alcune semplici personalizzazioni sul tuo sito usando un javascript sul lato client per recuperare le informazioni come mostrato nell'esempio qui: http://msdn.microsoft.com/en-us/library/live/hh826534.aspx.

È anche possibile, anche se un po 'più coinvolto, interrogare i server live dal codice lato server. L'applicazione di esempio descritta in http://dominicbetts.github.io/waad-acs-sample/index.html mostra un possibile approccio in un'applicazione MVC4.

0

Sembra esserci un modo, un po 'contorto, ma diventando il broker e utilizzando l'API di live connect, è possibile ottenere questa funzionalità.

Si veda: http://code.msdn.microsoft.com/windowsazure/Get-Azure-ACS-work-40d588cc#content

+0

Le risposte di solo collegamento sono sconsigliate perché Microsoft può modificare i suoi collegamenti e fare in modo che questa risposta diventi non valida. Sarebbe d'aiuto anche un semplice esempio di codice o scheletro. – hexafraction

Problemi correlati