客户地址未经授权,并且呼叫者不是Azure中的受信任服务

时间:2018-10-25 08:54:43

标签: c# azure windows-services azure-keyvault

我正在使用Azure。我有一个Windows服务可以访问Azure Key Vault。
我的代码与此类似:

public static async Task<string> GetToken(string authority, string resource, string scope)
    {
        var authContext = new AuthenticationContext(authority);
        ClientCredential clientCred = new ClientCredential(...); //app id, app secret
        AuthenticationResult result = await authContext.AcquireTokenAsync(resource, clientCred);

        if (result == null)
            throw new InvalidOperationException("Failed to obtain the JWT token");

        return result.AccessToken;
    }

    public static string GetSecret(string secretName)
    {
        KeyVaultClient keyVaultClient = new KeyVaultClient(GetToken);
        try
        {
            return keyVaultClient.GetSecretAsync("my-key-vault-url", secretName).Result.Value;
        }
        catch(Exception ex)
        {
            return "Error";
        }
    }

在构建并部署Windows服务之后,我已经启动了它。然后我得到这个异常:Client address (IPaddress) is not authorized and caller is not a trusted service

但是我可以对密钥库进行远程登录:

telnet projectName-keyvault 443

我已经搜索了此问题,但找不到任何解决方案。在这方面的任何帮助都将非常有帮助。

3 个答案:

答案 0 :(得分:1)

该错误正确显示您的客户端IP地址未被授权。

如果启用,则需要在Azure密钥仓库中添加Firewalls and virtual networks的客户端IP。

答案 1 :(得分:0)

我尝试了您的代码,并且能够从密钥库中获取数据。 enter image description here

答案 2 :(得分:0)

@Nancy Xiong-MSFT曾评论说我的关键保险柜有问题。

在关键保管库的防火墙和虚拟网络中,我添加了用来访问关键保管库的IP地址。