2016-02-15 189 views
0

我有一個VB.NET VS2012項目,我正在使用Azure AD成功驗證OneDrive文件夾。我想能夠緩存憑據,所以我不需要每次都手動登錄。 SDK暗示了緩存憑據的可能性,但我對新的OneDrive SDK不是很熟悉,因此尋求一些關於如何使用ADALCredentialCache對象來存儲我的登錄信息的幫助。在我可以做到這一點之前,我需要解決如何使用額外參數連接到Azure AD。Azure AD身份驗證OneDrive for Business API

我使用以下使用發現服務的語句和參數成功連接。

var oneDriveClient = BusinessClientExtensions.GetActiveDirectoryClient(clientId, returnUrl); 

我相信我需要使用OneDrive商務API端點和資源ID用下面的命令連接,因爲我那麼應該能夠使用CredentialCache參數。

var oneDriveClient = BusinessClientExtensions.GetActiveDirectoryClient(
        clientId, 
        returnUrl, 
        oneDriveApiEndpoint, 
        serviceResourceId) 

我的問題是,我不知道什麼是serviceResourceId引用。任何人都可以擺脫燈嗎?

這是第一部分,下一部分是如何使用CredentialCache參數來存儲和保存登錄憑證。

任何幫助將不勝感激,我已經花了幾天拖網互聯網的答案,但迄今還沒有發現任何具體的足夠提供我需要的答案。

乾杯

格雷格Ĵ

編輯:

好了,現在我用所需命令驗證使用憑據緩存我要麼是錯誤的或我有什麼錯誤的想法確實。我想要做的是後續對應用程序的調用自動進行身份驗證。這裏是我的代碼...

 'Microsoft.OneDrive.Sdk.AdalCredentialCache 
     Dim credentialCache As AdalCredentialCache 

     If IO.File.Exists(strCacheFile) Then 

      Dim rcb As Byte() = IO.File.ReadAllBytes(strCacheFile) 

      credentialCache = New AdalCredentialCache(rcb) 

     Else 

      credentialCache = New AdalCredentialCache 

     End If 

     odc = BusinessClientExtensions.GetActiveDirectoryClient(azure_client_id, redirurl, sResource, endpoint_Url, credentialCache) 

     Await odc.AuthenticateAsync() 

     Dim ccb As Byte() = credentialCache.GetCacheBlob() 

     IO.File.WriteAllBytes(strCacheFile, ccb) 

第一遍提示我輸入我的憑據,以便做到這一點和我聯繫。緩存被寫入一個文件。在隨後的調用中,我從文件中獲取緩存信息並將其傳遞到憑證緩存變量,但仍然提示我登錄。憑證緩存的長度爲3582.

任何幫助,將不勝感激。

問候

格雷格Ĵ

回答

1

serviceResourceId和oneDriveApiEndpoint從發現服務,當你調用BusinessClientExtensions.GetActiveDirectoryClient檢索。請參閱https://dev.onedrive.com/auth/aad_oauth.htm(步驟3 - 發現OneDrive for Business資源URI)以獲取有關發現如何工作以及何時執行的更詳細說明。

對於CredentialCache,可以使用AdalCredentialCache類。

+0

非常好,謝謝。但是我仍然遇到了Credential Cache的問題,請參閱上面的Post中的其他信息 –