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

问题描述 投票:0回答:2

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

azure azure-active-directory azure-keyvault
2个回答
0
投票

权威 - https://login.windows.net/<your AD tenant GUID>(这是颁发令牌的权威机构)

资源 - https://vault.azure.net(这是请求令牌的资源)

范围 - 此案例的空字符串。请注意,它是您方法中的参数,但它并未真正用于任何地方。

另请注意,在使用对象模型时,您会在极少数情况下直接调用此方法。更有可能的是,您只需将此方法的委托传递给KeyVaultClient.AuthenticationCallback或KeyValutKeyResolver,就像您共享的教程中所示。


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提供(即您不必为它们提供值),并传递给委托函数AuthenticationCallback,后者返回令牌以获取密钥保管库客户端。希望这可以帮助! :)

© www.soinside.com 2019 - 2024. All rights reserved.