0

我的REST請求看起來像這樣後,我通過這個指南閱讀:How to Authorize to Microsoft Azure-ADAzure的AD的OAuth 2.0代碼進行授權與Java新澤西

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的形式)接收授權碼,然後訪問令牌爲Sharepoint/Exchange事後與Java澤西?

回答

0

在授權代碼授權流程中,用戶代理(例如瀏覽器)應該向授權端點發出GET請求。這是文獻中描述的第一步:

  1. 客戶端應用程序通過重定向用戶代理向天青AD授權端點開始流動。如果需要同意,用戶認證並同意。

這是必要的,以便發生不同的可能的用戶交互。有時會顯示用戶意見提示,或者可能是多因素身份驗證,或者需要聯合用戶的本地STS。

用戶通過身份驗證後,Azure AD會將用戶代理重定向回redirect_uri中指定的URI,包括授權代碼作爲查詢參數。這將導致對您的服務發出GET請求,您可以使用code參數請求訪問令牌(現在您的直接從您的服務向Azure AD發出請求)。

如果您沒有對用戶進行身份驗證,而是有興趣進行服務到服務身份驗證,那麼您將使用不同的流程,如Service to Service Calls Using Client Credentials中所述。