0

阅读本指南后,我的 REST 请求如下所示:如何授权给 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);

但是,我收到了完整的 HTML 作为响应,得出的结论是端点认为我是浏览器。有没有办法以某种方式正确进行(以授权方的 URL 的形式)接收授权代码,然后使用 Java Jersey访问Sharepoint/Exchange的令牌?

4

1 回答 1

0

在授权代码授予流程中,用户代理(例如浏览器)应该向授权端点发出 GET 请求。这是文档中描述的第一步:

  1. 客户端应用程序通过将用户代理重定向到 Azure AD 授权终结点来启动流程。如果需要同意,用户进行身份验证并同意。

这是必要的,以便可以发生不同的可能的用户交互。有时会显示用户同意提示,或者可能需要多因素身份验证,或者需要与用户的本地 STS 联合。

用户通过身份验证后,Azure AD 会将用户代理重定向回 中指定的 URI redirect_uri,包括授权代码作为查询参数。这将导致向您的服务发出 GET 请求,并带有一个code可用于请求访问令牌的参数(现在您直接从您的服务向 Azure AD 发出请求)。

如果您不是对用户进行身份验证,而是对进行服务到服务的身份验证感兴趣,则可以使用不同的流程,如使用客户端凭据的服务到服务调用中所述。

于 2015-07-28T13:50:20.193 回答