2016-05-26 28 views
12

In ADAL.NET 2.x, usiamo il codice qui sotto per acquisire gettone da Azure AD utilizzando UserCredential e funziona perfettamente:ADAL.NET v3 non supporta AcquireToken con UserCredential?

var authContext = new AuthenticationContext(Authority); 
var userCredential = new UserCredential(username, password); 
var token = authContext.AcquireToken(ResourceUrl, ClientId, userCredential); 

Quando oggi ho aggiornato ADAL.NET v3, il codice non può essere compilato più perché nella nuova versione, UserCredential non ha un costruttore sovraccarico con nome utente e password.

Come posso risolvere questo con la nuova versione di ADAL.NET v3?

risposta

18

Usa UserPasswordCredential classe invece che è una sottoclasse di UserCredential

+0

Grazie, funziona –

+0

ottengo AADSTS70002: Il corpo della richiesta deve contenere i seguenti parametri: 'client_secret o client_assertion'. Trace ID: 8be09594-65c2-4e2d-bce2-17980f739371 ID Correlazione: 7312b657-f6d4-4d0b-8fc2-c66f1b9f0325 Timestamp: 2016/12/28 16: 14: 16Z –

+0

si sta tentando di utilizzare il client riservate (API Web) id per un'applicazione nativa. Devi creare un nuovo ID app nativo per il tuo flusso –

2

Prova UserPasswordCredential, la classe doveva essere rinominato in v3.

2

Questo corregge il problema per UserCredentials, ma sembra che si tratti di una modifica al tipo AuthenticationContext che sembra non avere più un metodo AcquireToken. È possibile affrontare questo utilizzando AcquireTokenAsync

1

FYI, sembra come se hanno rimosso questa funzionalità da ADAL. source

Per autenticare con un nome utente/password combo, credo che sarà necessario utilizzare HttpClient e inoltrare la richiesta direttamente.

Pubblica:

https://login.microsoftonline.com/yourdomain.onmicrosoft.com/oauth2/token 

con:

resource={resource}&client_id={clientid}&grant_type=password&username={username}&password={password}&scope=openid&client_secret={clientsecret} 

nella richiesta