我指的是以下文章: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的值应该是什么(字符串授权,字符串资源,字符串范围)
答案 0 :(得分:0)
权威-https://login.windows.net/<your AD tenant GUID>
(这是颁发令牌的权威)
资源-https://vault.azure.net
(这是请求令牌的资源)
范围-这种情况下为空字符串。请注意,这是您方法中的参数,但实际上并没有在任何地方使用。
还请注意,在使用对象模型的极少数情况下,您将直接调用此方法。很有可能,您只需将此方法的委托传递给KeyVaultClient.AuthenticationCallback或KeyValutKeyResolver,就像您共享的教程中显示的那样。
答案 1 :(得分:0)
一个不错的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提供(即,您不必为其提供值),并传递给委托函数{{3} },它返回令牌以获取密钥库客户端。希望这可以帮助! :)