Azure AuthenticationContext |第一个参数“ authority”的值应该是什么

时间:2018-09-12 09:41:17

标签: azure azure-active-directory azure-keyvault

我指的是以下文章: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的值应该是什么(字符串授权,字符串资源,字符串范围

2 个答案:

答案 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;
});

authorityresourcescope由SDK提供(即,您不必为其提供值),并传递给委托函数{{3} },它返回令牌以获取密钥库客户端。希望这可以帮助! :)