2016-04-27 9 views
2

私はAzure KeyVaultにアクセスするための簡単なアプリケーションを、自分のドメインに参加した資格情報を使って作成しようとしています。私はそれが資格の一部か、KeyVaultにアクセスしているかどうかわかりませんが、 "無効なURI:URIの形式を判別できませんでした"という例外が表示され続けます。 Azure PowerShellコマンドレットを使用してKeyVaultにアクセスできますが、C#を使用することはできません。これを引き起こしている可能性が何ユーザクレデンシャルを使用してAzure Key Vaultにアクセスするにはどうすればよいですか?

class Program 
{ 
    const string ClientId = "MY AAD CLIENT ID"; 

    static void Main(string[] args) 
    { 
     Console.WriteLine("Hello, KeyVault!"); 
     var client = new KeyVaultClient(new KeyVaultClient.AuthenticationCallback(GetAccessToken)); 
     var secret = client.GetSecretAsync("vaultName", "secretName").Result; // Throws Invalid URI: The format of the URI could not be determined 
     Console.WriteLine(secret.Value); 
     Console.ReadLine(); 
    } 

    private static async Task<string> GetAccessToken(string authority, string resource, string scope) 
    { 
     var context = new AuthenticationContext(authority, TokenCache.DefaultShared); 
     var authResult = await context.AcquireTokenAsync(resource, ClientId, new UserCredential()); 
     return authResult.AccessToken; 
    } 
} 

ここで私が持っているコードですか?私はインターネットを精査して、この方法でKeyVaultにアクセスする方法を示すサンプルコードを見つけられませんでした。

+0

アプリケーションIDを使用してキーボルトにアクセスすることはできないと思います。私はAzure PowerShellクライアントID「1950a258-227b-4e31-a9cf-717495945fc2'を使って動作させました。 AADクライアントIDをこのIDで置き換えることができますか? –

+0

あなたがしようとしていることの正確な詳細をこの記事で確認してください。https://blogs.msdn.microsoft.com/kaevans/2016/10/31/using-azure-keyvault-to- store-secrets/ – nashwan

答えて

3

VaultNameは、Vaultの名前だけでなく、KeyVaultのURLである必要があります。 あなたKeyVaultの名前がTestKeyVaultある場合たとえば、あなたは、次のコードを使用する必要があります - あなたのコードの

var secret = client.GetSecretAsync("https://testkeyvault.vault.azure.net:443", "secretName").Result; 

残りは正常に見えます。

+1

URLに443ポートは必要ありません。 ThatsはそのHTTPSを暗黙的に表します。 – nashwan

関連する問題