2016-02-15 192 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中的其他信息 –