Autorizzazione di concessione del codice Azure AD OAuth 2.0 con Java Jersey


La mia richiesta REST è simile a questa dopo aver letto questa guida: Come autorizzare Microsoft Azure-AD

Client cli = ClientBuilder.newClient();
WebTarget webTar = cli.target("https://login.microsoftonline.com/yyyyy.onmicrosoft.com/oauth2/authorize").queryParam("response_type", "code");
webTar = webTar.queryParam("client_id", "ed4d67dc-34a8-4eb3-9058-49f39yyyyyy");
webTar = webTar.queryParam("redirect_uri", URLEncoder.encode("https://xyxyxyx.onmicrosoft.com/o365jso", "UTF-8"));
String response = webTar.request(MediaType.APPLICATION_JSON).get(String.class);

Tuttavia sto ricevendo un HTML completo come risposta che conclude che l'endpoint pensa che io sia un browser. C'è un modo per procedere in qualche modo correttamente (sotto forma di un URL al lato di autorizzazione) per ricevere il codice di autorizzazione e successivamente il token di accesso per Sharepoint/Exchange in seguito con Java Jersey?

Author: Philippe Signoret, 2015-07-28

1 answers

Nel flusso di concessione del codice di autorizzazione, l'agente utente (ad esempio un browser) è quello che dovrebbe effettuare una richiesta GET all'endpoint di autorizzazione. Questo è il primo passo descritto nel documento:

  1. L'applicazione client avvia il flusso reindirizzando l'agente utente all'endpoint di autorizzazione di Azure AD. L'utente si autentica e acconsente, se è richiesto il consenso.

Questo è necessario in modo che le diverse interazioni utente posible possono avvenire. A volte viene visualizzato un prompt di consenso dell'utente, o forse è necessaria l'autenticazione a più fattori o la federazione alla STS locale dell'utente.

Una volta autenticato l'utente, Azure AD reindirizzerà l'agente utente all'URI specificato in redirect_uri, incluso il codice di autorizzazione come parametro di query. Ciò comporterà una richiesta GET al servizio, con un parametro code che è possibile utilizzare per richiedere un token di accesso (ora effettuerà direttamente la richiesta dal tuo servizio ad Azure AD).

Se, invece di autenticare l'utente, sei interessato a eseguire l'autenticazione da servizio a servizio, utilizzerai un flusso diverso, come descritto in Chiamate da servizio a servizio utilizzando le credenziali del client.

 0
Author: Philippe Signoret, 2015-07-28 14:08:16