我指的是以下文章:https://docs.microsoft.com/en-us/azure/storage/blobs/storage-encrypt-decrypt-blobs-key-vault
我需要帮助才能理解下面粘贴的方法的参数:
private async static Task<string> GetToken(string authority, string resource, string scope)
{
var authContext = new AuthenticationContext(authority);
ClientCredential clientCred = new ClientCredential(
ConfigurationManager.AppSettings["clientId"],
ConfigurationManager.AppSettings["clientSecret"]);
AuthenticationResult result = await authContext.AcquireTokenAsync(resource, clientCred);
if (result == null)
throw new InvalidOperationException("Failed to obtain the JWT token");
return result.AccessToken;
}
请告知GetToken的值应该是什么(字符串权限,字符串资源,字符串范围)
权威 - https://login.windows.net/<your AD tenant GUID>
(这是颁发令牌的权威机构)
资源 - https://vault.azure.net
(这是请求令牌的资源)
范围 - 此案例的空字符串。请注意,它是您方法中的参数,但它并未真正用于任何地方。
另请注意,在使用对象模型时,您会在极少数情况下直接调用此方法。更有可能的是,您只需将此方法的委托传递给KeyVaultClient.AuthenticationCallback或KeyValutKeyResolver,就像您共享的教程中所示。
一个好的example(我改变了一些代码,因为它已经过时并使用了你的客户端/秘密的值),用于使用AD凭证获取KeyVaultClient()。
var keyVaultClient = new KeyVaultClient(async(authority, resource, scope) =>
{
var adCredential = new ClientCredential(ConfigurationManager.AppSettings["clientId"],
ConfigurationManager.AppSettings["clientSecret"]);
var authenticationContext = new AuthenticationContext(authority, null);
var authenticationResult = await authenticationContext.AcquireTokenAsync(resource, adCredential);
return authenticationResult.AccessToken;
});
authority
,resource
和scope
由SDK提供(即您不必为它们提供值),并传递给委托函数AuthenticationCallback
,后者返回令牌以获取密钥保管库客户端。希望这可以帮助! :)