Autorisation d'octroi de code Azure AD OAuth 2.0 avec Java Jersey


Ma demande REST ressemble à ceci après avoir lu ce guide: Comment autoriser 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);

Cependant, je reçois une réponse HTML complète qui conclut que le point de terminaison pense que je suis un navigateur. Existe-t-il un moyen de procéder correctement (sous la forme d'une URL vers le côté autorisation) pour recevoir le code d'autorisation et ensuite le jeton d'accès pour Sharepoint/Exchange après avec Java Jersey?

Author: Philippe Signoret, 2015-07-28

1 answers

Dans le flux d'octroi de code d'autorisation, l'agent utilisateur (par exemple un navigateur) est celui qui devrait faire une demande GET au point de terminaison d'autorisation. Il s'agit de la première étape décrite dans le document:

  1. L'application cliente démarre le flux en redirigeant l'agent utilisateur vers le point de terminaison d'autorisation Azure AD. L'utilisateur s'authentifie et consent, si le consentement est requis.

Ceci est nécessaire pour que les différentes interactions utilisateur posibles puissent dérouler. Parfois, une invite de consentement de l'utilisateur est affichée, ou peut-être une authentification multifacteur ou une fédération vers le STS local de l'utilisateur est requise.

Une fois l'utilisateur authentifié, Azure AD redirigera l'agent utilisateur vers l'URI spécifié dans redirect_uri, y compris le code d'autorisation en tant que paramètre de requête. Cela entraînera une demande GET à votre service, avec un paramètre code que vous pouvez utiliser pour demander un jeton d'accès (maintenant vous feriez faire la demande directement à partir de votre service à Azure AD).

Si, au lieu d'authentifier l'utilisateur, vous souhaitez effectuer une authentification service à service, vous utiliserez un flux différent, comme décrit dans Appels de service à service Utilisant les informations d'identification du client.

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