Azure鍵保管庫から秘密にアクセスする際に問題があります。私は問題が私は十分にその用語を理解していないと思うので、私は様々なAPI呼び出しに供給している引数が間違っています。デスクトップコンソールアプリケーションからAzure Key Vaultにアクセスできない
protected async Task<string> GetCommunityKeyAsync(UserConfiguration user)
{
var client = new KeyVaultClient(
new KeyVaultClient.AuthenticationCallback(GetAccessTokenAsync),
new HttpClient());
// user.VaultUrl is the address of my key vault
// e.g., https://previously-created-vault.vault.azure.net
var secret = await client.GetSecretAsync(user.VaultUrl, "key-to-vault-created-in-azure-portal");
return secret.Value;
}
private async Task<string> GetAccessTokenAsync(string authority, string resource, string scope)
{
var context = new AuthenticationContext(authority, TokenCache.DefaultShared);
// this line throws a "cannot identify user exception; see
// below for details
var result =
await context.AcquireTokenAsync(resource, "id-of-app-registered-via-azure-portal", new UserCredential());
return result.AccessToken;
}
ここでスローされます例外である:ここで
は、私が使用している基本的なコードです
Microsoft.IdentityModel.Clients.ActiveDirectory.AdalException
HRESULT = 0x80131500メッセージ= unknown_user:ログに記録されたログを特定できませんでした。ユーザーのソース= Microsoft.IdentityModel.Clients.ActiveDirectory
StackTrace: Microsoft.Identi Microsoft.IdentityModelで System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(タスク タスク)でSystem.Runtime.ExceptionServices.ExceptionDispatchInfo.ThrowでtyModel.Clients.ActiveDirectory.AcquireTokenNonInteractiveHandler.d__4.MoveNext() ()
。 Microsoft.IdentityModel.Clientsで System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(タスク タスク)でSystem.Runtime.ExceptionServices.ExceptionDispatchInfo.ThrowでClients.ActiveDirectory.AcquireTokenHandlerBase.d__57.MoveNext() ()
。 ActiveDirectory.AuthenticationContext.d__37.MoveNext() Microsoft.IdentityModel.Clients.ActiveDirectory.AuthenticationContextIntegratedAuthExtensions.d__0.MoveNextでSystem.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotificationでSystem.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
(タスク タスク)() は0でSystem.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()System.Runtime.CompilerServices.TaskAwaiter1.GetResult() at NextDoorScanner.ScannerJob.<GetAccessTokenAsync>d__21.MoveNext() in C:\Programming\CommunityScanner\CommunityScanner\ScannerJob.cs:line 197 at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable
1.ConfiguredTaskAwaiter.GetResultで System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(タスク タスク)で
() でマイクロソフト。 Azure.KeyVault.KeyVaultCredential.d__9.MoveNext() System.Runtime.CompilerServices.ConfiguredTaskAwaitable1.ConfiguredTaskAwaiter.GetResult() at Microsoft.Azure.KeyVault.KeyVaultCredential.<ProcessHttpRequestAsync>d__10.MoveNext() at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
1.ConfiguredTaskAwaiter.GetResult(AT System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(タスク タスク)でSystem.Runtime.ExceptionServices.ExceptionDispatchInfo.Throwで()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.Azure.KeyVault.KeyVaultClient.<GetSecretWithHttpMessagesAsync>d__65.MoveNext() at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable
) で Microsoft.Azure.KeyVault.KeyVaultClientExtensions.d__11.MoveNext()System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throwで ()System.Runtimeで System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(タスク タスク)で
。 CompilerServices.TaskAwaiter1.GetResult() at NextDoorScanner.ScannerJob.<GetCommunityKeyAsync>d__20.MoveNext() in C:\Programming\CommunityScanner\CommunityScanner\ScannerJob.cs:line 188 at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter
1.GetResult() CでNextDoorScanner.NextDoorScannerJob.d__4.MoveNext()で :\プログラミング\ CommunityScanner \ CommunityScanner \ NextDoorScannerJob.cs:ライン System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()で 46で System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(タスク タスク)System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() at NextDoorScanner.Program。メイン(文字列[] args)を Cで:\プログラミング\ CommunityScanner \ CommunityScanner \ Program.csを:ライン
22 Iやった、私はPowerShellを経由して、Azureの利用者としての私のデスクトップを登録関与思ったいくつかの設定:
Login-AzureRmAccount // as I recall, this next line complained about the app ID already being defined New-AzureRmADServicePrincipal -ApplicationId 'id-of-app-previously-defined-via-azure-portal' Set-AzureRmKeyVaultAccessPolicy -VaultName 'vault-name' -ServicePrincipalName id-of-app-previously-defined-via-azure-portal -PermissionsToSecrets Get
I)はGetSecretAsync(へボールトキーを提供することになってるかどうかは不明でよ。私は、新しく作成したUserCredentialをAcquireTokenAsync()に渡す以外の何かをやろうとしているのだろうかと思います。最後に、オンラインの参考文献を参照して、重要な格納域で使用する格納域アカウントを作成しましたが、格納域アカウントを使用している格納域は作成しませんでした。そして、私はコード内のストレージアカウントを特定していません。
ヘルプ、またはコンソールデスクトップアプリケーションから重要なボールトにアクセスする本当に良い例への参照をいただければ幸いです。
Thanx、Tom。フィードバックとアイデアだけでなく、別のSOスレッドへのリンクも提供していただき、ありがとうございます。 –