2016-02-24 54 views
1

我正在嘗試對Office365使用Exchange Web Services(EWS)進行OAuth身份驗證。這是在成功地將OAuth2與新的RESTful圖形API一起使用之後,但發現圖形API並沒有做我需要用機密客戶端「僅應用程序」流程所做的事情(這將被守護進程使用,所以沒有用戶交互)。我發現(我希望!)EWS SOAP與保密客戶端OAuth授權頭的交易必須具有使用X.509證書創建的承載訪問令牌,而不僅僅是client_id/client_secret您可以使用RESTful Graph API。否則,EWS SOAP失敗的401未經授權HTTP返回,和一個額外的非標頭被稱爲X-MS-診斷與價值:Azure應用程序清單中的「encryptedSecretValue」參數應該是什麼?

2000001;reason="The access token is acquired using an authentication method that is too weak to allow access for this application. Presented auth strength was 1, required is 2.";error_category="invalid_token" 

不幸的是,Azure管理門戶網站不具備管理這些一個UI證書,所以你必須下載,編輯,然後上載應用程序的清單(一個JSON文件)。

我創建了一個自簽名的2048位X.509證書(使用openssl生成名爲cert.pem的PEM文件和名爲key.pem的文件中的密鑰),然後從cert.pem生成base64編碼指紋使用:

echo $(openssl x509 -in cert.pem -fingerprint -noout) | sed 's/SHA1 Fingerprint=//g' | sed 's/://g' | xxd -r -ps | base64 

我遵循的this document步驟2的說明,嘗試把證書導入清單(除了已有的圖形API的client_id/client_secret設置,我仍然想使用更好/更現代的RESTful圖API儘可能在應用程序中)。要做到這一點,我添加了一個新的數組數據結構到passwordCredentials數組中的JSON文件:

{ 
    "customKeyIdentifier": "<base64EncodedFingerprintFromAbove>", 
    "keyId": "<guid>", 
    "endDate": "2018-11-24T09:12:01.397205Z", 
    "type": "AsymmetricX509Cert", 
    "usage": "Verify", 
    "value": "MIIDvTCC (lots of certificate) cskQ==" 
} 

然而,當我現在嘗試使用Azure的管理門戶上傳編輯的清單,我得到的錯誤:

ParameterValidationException=Invalid parameters provided; BadRequestException=Encrypted secret cannot be empty and can be at most 1024 bytes. Parameter name: encryptedSecretValue; 

沒有在我的清單JSON文件名爲encryptedSecretValue參數,我無法找到通過Google on what this error meanswhat should go in this parameter什麼。

所以我的問題是:什麼應該進入應用清單JSON文件,以允許證書用於獲取用EWS SOAP查詢進行OAuth授權的機密客戶端訪問令牌?我吠叫錯了樹嗎?另外,假設我可以使用SOAP來處理這個問題,我可以使用RESTful Graph API調用以及EWS SOAP調用(即在同一守護程序中混合使用Graph和EWS)的訪問令牌嗎?

回答

2

passwordCredentials用於共享密鑰/密碼(這就是用戶界面中顯示的內容)。

您需要使用keyCredentials進行X509 /非對稱密鑰支持。所以,換你JSON以上:

"keyCredentials": [ 
     put your JSON block from above right here 
    ] 

在未來,我們希望有UX將徹底簡化這個painpoint,並啓用證書的簡單的上傳。然而,這是我們現在所擁有的一切。

希望這會有所幫助,

+0

這對我前進很有幫助 - 謝謝。 –

相關問題