2016-09-06 65 views
8

當按照這份指南:https://azure.microsoft.com/en-us/documentation/articles/resource-manager-api-authentication/#_get-objectid-of-application-service-principal-in-user-azure-ad訪問令牌丟失或畸形調用圖形API

我已經到了,我打電話graph.windows.net獲取用戶Azure的AD服務主體的的ObjectId階段。

當我做了電話,但是,我得到了以下信息:

{"odata.error":{"code":"Authentication_MissingOrMalformed","message":{"lang":"en","value":"Access Token missing or malformed."},"values":null}} 

我已經試圖與「onmicrosoft.com」地址替換ClientID的太(這樣graph.windows .net/appname.onmicrosoft.com/...),仍然收到相同的消息。

+0

只是一個關於賞金評論:不管解決這個問題得到賞金明顯。 – Asaf

+0

你能告訴我們你的代碼樣本嗎?錯誤很明顯,你錯過了token.so,要麼你沒有發送它,或者沒有以API期望的方式發送它。 –

+0

@Asaf我們在使用Fiddler檢索令牌時遇到了這個問題,事實證明這是由於應用/客戶端密鑰包含特殊字符,需要將其編碼爲不記名令牌請求的一部分。 – jimpaine

回答

4

檢查此鏈接https://github.com/Azure/azure-sdk-for-node/issues/1782

我一直運行到這個問題。我用下面的代碼爲我的本機應用程序的承載令牌:

 var authContext = new AuthenticationContext("AUTHORITY"); 
     string token; 
     try 
     { 
      var authresult = authContext.AcquireToken("MYAPP_ID","MYAPP_CLIENTID","MYAPP_REDIRECTURI"); 
      token = authresult.AccessToken; 
     } 

使用該令牌工作的罰款爲自己的應用程序內授權的行動,而是努力時,我會得到相同的錯誤的OP使用與Graph API的授權相同的標記。

我所要做的就是獲得專門用於Graph API的新令牌 - 我使用了與上面相同的代碼,但我使用"https://graph.windows.net"而不是"MYAPP_ID"。因此,要明確,下面的代碼給了我圖形API正確的OAuth令牌:

 var authContext = new AuthenticationContext("AUTHORITY"); 
     string token; 
     try 
     { 
      var authresult = authContext.AcquireToken("https://graph.windows.net","MYAPP_CLIENTID","MYAPP_REDIRECTURI"); 
      token = authresult.AccessToken; 
     } 

只要確保你在Azure中註冊的應用具有必要的權限來訪問您的Azure中域的目錄。

可能對你有幫助!

+0

具有https://graph.windows.net的調用用於調用https://login.microsoftonline.com/'+ APP_ID +'/ OAuth2/Token'的階段?因爲調用不適合我graph.windows.net .. – Asaf

+0

我也嘗試調用_'https://login.microsoftonline.com/'+ tenantId +'/ OAuth2/Token'_(正常情況),但將** client_id **參數更改爲graph.windows.net – Asaf

2

爲了擴展我的評論,當應用祕密包含需要編碼的字符時,我們已經看到了這一點。如「+」和「=」

enter image description here

如果不使用某些客戶端的助手提供或使用Fiddler或郵遞員正在測試將需要URL調用圖形API之前編碼的祕密,所以看起來就變成:

「7hIkYG5m7xJQnocThxMc4yPjtbRP7bO41aNC%2bbrEzvo%3D」

+1

對此肯定嗎?當我這樣做時,我得到:「錯誤」:「invalid_client」,「error_description」:錯誤驗證憑據。提供無效的客戶機密碼 – Asaf

+0

只需確認,這是在發送到https://login.microsoftonline.com/TENANT_ID/OAuth2/Token時的** client_secret **字段 – Asaf

相關問題