2016-01-13 21 views
15

Sto cercando di ottenere il flusso di lavoro OAuth2 per eseguire correttamente Azure AD. Sto seguendo le indicazioni da questa fonte: https://msdn.microsoft.com/en-us/library/azure/dn645542.aspxOAuth2 con Azure AD - Non ottiene il consenso dell'utente

posso ottenere con successo una risposta codice di autorizzazione utilizzando questa richiesta: https://login.microsoftonline.com/[app-endpoint-id]/oauth2/authorize?response_type=code&client_id=[client-id]&redirect_uri=[redirect-uri]

Ho quindi utilizzare il codice di autorizzazione per richiedere un token di accesso con un post http in questo modo (sto testando questo utilizzando postino):

POST/[app-endpoint-id]/OAuth2/gettone HTTP/1.1 Host : login.microsoftonline.com cache-Control: no-cache Postman-Token: ed098281-9aa4-6e5f-915d-0253d9a876d3 Tipo di contenuto: applicazione on/x-www-form-urlencoded

grant_type = authorization_code & client_id = [client-id] & codice = [authorization_code] & redirect_uri = [redirect_uri] & client_secret = [client-secret] & risorsa = [App-Il url]

Viene visualizzato il seguente messaggio di errore dalla richiesta POST: {"errore": "invalid_grant", "error_description": "AADSTS65001: l'utente o l'amministratore non ha acconsentito a utilizzare l'applicazione con ID" app- id'. Invia una richiesta di autorizzazione interattiva per questo utente e risorsa. \ R \ nID di traccia: trace-di \ r \ n ID correlazione: id-correlazione \ r \ nTimestamp: 2016-01-13 17: 18: 39Z "," error_codes ": [65001], "timestamp": "2016-01-13 17: 18: 39Z", "trace_id": "trace-id", "correlation_id": "correlation-id"}

Se svuoto la cache e fare la prima richiesta per il codice di autorizzazione Sarò reindirizzato per accedere. Tuttavia, non ho alcun modo di autorizzare la mia app dopo l'accesso come si dice che dovrei in questa documentazione:

// azzurro. microsoft.com/en-us/documentation/articles/active-directory-integrating-applications/

Cosa sto facendo di sbagliato qui? Sto cercando di ottenere un token di accesso.

+0

Che cosa stai cercando in particolare? cioè stai provando a far funzionare un'app WebAPI con AAD o un'app mobile, in quale lingua? – theadriangreen

+0

Sto cercando di ottenere un'app WebAPI che funzioni con AAD in Java. – Spensaur

+0

Sto affrontando lo stesso problema ma sto usando PHP. –

risposta

9

Il problema che si sta verificando è che l'utente che si sta utilizzando per accedere alla propria app non ha aggiunto la propria applicazione all'elenco delle applicazioni supportate. Ti sta dicendo di usare il flusso interattivo come amministratore.

Il consenso è un processo in due fasi:

1) In primo luogo, l'amministratore del locatario deve approvare l'applicazione. È possibile eseguire 1) nel portale di Azure del tenant che desidera utilizzare l'app o 2) quando si accede all'applicazione e utilizzando le credenziali di amministratore rispetto all'app quando si effettua l'accesso.

Esempio di approvazione del portale di Azure:

2) in secondo luogo, sarà promosso ogni utente aggiuntivo (non-admin) per consentire la loro informazioni individuali quando si utilizza l'applicazione per la prima volta dopo l'amministratore ha acconsentito che l'applicazione può essere utilizzata.

+0

Grazie! Per qualche motivo avevo l'impressione di essere un amministratore perché ho creato le app ma il tuo post mi ha fatto capire che non lo ero. In realtà ho già dato le autorizzazioni delegate nel portale di Azure dell'app degli inquilini prima di pubblicare la mia domanda qui, il che mi ha portato a credere che avessi i permessi di amministratore. Aggiornamento – Spensaur

+3

- Sono stato in grado di accedere con un account amministratore e mi è stato richiesto il consenso. Successivamente ho ricevuto un token di accesso. Con lo stesso account amministratore ho controllato le autorizzazioni sul portale di Azure e mi sono assicurato che l'inquilino avesse il permesso e così è stato. Ma continuo a incontrare lo stesso errore quando cerco di ottenere un token di accesso con un utente non amministratore. Ho impostato l'assegnazione utente su no. Ma ho comunque assegnato il mio account utente. Devo fare qualcosa di speciale per ottenere il prompt delle autorizzazioni per un utente non amministratore dopo aver effettuato l'accesso? – Spensaur

+0

Quando provo un altro account utente non amministratore che non è il mio. Ho ricevuto il seguente messaggio: Ci dispiace, ma abbiamo problemi a firmarti. Abbiamo ricevuto una richiesta errata. Ulteriori informazioni tecniche: AADSTS90093: questa operazione può essere eseguita solo da un amministratore. Esci e accedi come amministratore o contatta uno degli amministratori della tua organizzazione. – Spensaur

2

Provare a fornire la risorsa come "https://graph.windows.net" nella richiesta di post.

Ha funzionato per me.

+1

Questo funziona. Si noti che un'API protetta avrà bisogno dei segmenti di pubblico consentiti configurati per includere graph.windows.net come per https://stackoverflow.com/questions/44466189/oauth2-resource-owner-password-grant-via-api/44539932#44539932 – Sentinel