2016-08-02 143 views
3

我在基於java的服務器端應用程序中爲Office 365帳戶實施Oauth 2身份驗證。閱讀完文檔後,我做了以下幾件事:在Office 365 Oauth2身份驗證中獲取令牌

  • 我有Office 365訂閱。
  • 我在Azure Actve目錄中創建了一個應用程序,這對於使用 office 365帳戶驗證Web應用程序是必需的。
  • 我有客戶端ID和密碼。給予Azure應用程序的所有權限,我也有 。
  • 我使用的地址請求授權代碼:

https://login.microsoftonline.com/common/oauth2/authorize?client_id=了{client_id} & RESPONSE_TYPE =代碼& REDIRECT_URI = {重定向URL} & response_mode =查詢

作爲其響應,我按預期獲得授權碼:

http://localhost:8080?code={authorication code}&session_state=259479e4-84aa-42ea-91e9-9e919cc99587 

現在我需要獲取令牌以及用戶名(用戶登錄的用戶ID),因爲我需要用戶名進行進一步處理。對於這一點,我使用這裏介紹的方法:

https://azure.microsoft.com/en-us/documentation/articles/active-directory-protocols-oauth-code/

即使用這樣的POST請求:

POST /{tenant}/oauth2/token HTTP/1.1 
Host: https://login.microsoftonline.com 
Content-Type: application/x-www-form-urlencoded 
grant_type=authorization_code 
&client_id=2d4d11a2-f814-46a7-890a-274a72a7309e 
&code=AwABAAAAvPM1KaPlrEqdFSBzjqfTGBCmLdgfSTLEMPGYuNHSUYBrqqf_ZT_p5uEAEJJ_nZ3UmphWygRNy2C3jJ239gV_DBnZ2syeg95Ki-374WHUP-i3yIhv5i-7KU2CEoPXwURQp6IVYMw-DjAOzn7C3JCu5wpngXmbZKtJdWmiBzHpcO2aICJPu1KvJrDLDP20chJBXzVYJtkfjviLNNW7l7Y3ydcHDsBRKZc3GuMQanmcghXPyoDg41g8XbwPudVh7uCmUponBQpIhbuffFP_tbV8SNzsPoFz9CLpBCZagJVXeqWoYMPe2dSsPiLO9Alf_YIe5zpi-zY4C3aLw5g9at35eZTfNd0gBRpR5ojkMIcZZ6IgAA 
&redirect_uri=https%3A%2F%2Flocalhost%2Fmyapp%2F 
&resource=https%3A%2F%2Fservice.contoso.com%2F 
&[email protected] 

現在的問題是,當過我送這個帖子的請求,我總是得到錯誤代碼400或402等錯誤代碼等。我也用戶在Chrome中的POST男子檢查呼叫的響應。它總是返回錯誤這樣的:

{ 
    "error": "invalid_grant", 
    "error_description": "AADSTS65001: The user or administrator has not consented to use the application with ID. Send an interactive authorization request for this user and resource.\r\nTrace ID: b834315e-ccb3-4533-b7c9-4af7b34054b9\r\nCorrelation ID: 784f18da-5479-4b69-b939-0067abfcc460\r\nTimestamp: 2016-08-02 07:28:22Z", 
    "error_codes": [ 
    65001 
    ], 
    "timestamp": "2016-08-02 07:28:22Z", 
    "trace_id": "b834315e-ccb3-4533-b7c9-4af7b34054b9", 
    "correlation_id": "784f18da-5479-4b69-b939-0067abfcc460" 
} 

(注:我已經註冊使用管理員登錄的所有應用程序) 我已經嘗試了很多,找出什麼是怎麼回事錯在這裏。我在Azure Active目錄中添加了多個應用程序,但我總是得到類似的響應。

我請求專業人士來幫助我。 。 。 !其實我想讓用戶點擊office 365 web加載項中的按鈕並使用oauth2身份驗證登錄到我們的系統。有人建議我一些很好的教程,以成功實現這一點,這將是偉大的。

回答

0

如果您請求對Office 365的訪問令牌,在發送請求的資源參數應該是https%3A%2F%2Foutlook.office.com

也可以像Philip建議的那樣使用Microsoft Graph。您可以參考here瞭解如何選擇端點。