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

Cra*_*der 9 c# windows-services azure azure-keyvault

我正在 Azure 上工作。我有一个访问 Azure Key Vault 的 Windows 服务。

我的代码看起来像这样:

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";
    }
}
Run Code Online (Sandbox Code Playgroud)

在构建并部署 Windows 服务后,我启动了它。然后我得到这个异常:

客户端地址(IP 地址)未经授权且调用者不是受信任的服务

但是,我可以通过 telnet 访问密钥保管库:

telnet projectName-keyvault 443
Run Code Online (Sandbox Code Playgroud)

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

Nan*_*ong 15

该错误正确表明您的客户端 IP 地址未经授权。

如果启用了该设置,则需要在 Azure keyvault 中添加客户端 IP。

Azure > Keyvault > 网络设置

进一步阅读:

  • 我通过 VPN 连接到“授权”网络,但收到“客户端地址 ({public ip}) 未授权且调用者不是可信服务未授权且调用者不是可信服务”错误。如何确保 Azure 发现我已通过 VPN 连接并因此获得授权? (2认同)