내가 푸른 키 볼트에서 비밀을 액세스하는 데 문제가 있어요에서 푸른 키 볼트에 액세스 할 수 없습니다. 그 문제는 내가 적절하게 용어를 이해하지 않는 것이 의심, 그래서 다양한 API 호출에 공급하고있어 인수가 잘못되었습니다. 여기 데스크탑 콘솔 응용 프로그램
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 : 사용자가 Source = Microsoft.IdentityModel.Clients.ActiveDirectory에 기록 된 을 식별 할 수 없습니다.
StackTrace : at 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.ExceptionServices.ExceptionDispatchInfo.Throw() System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification에서
(작업 작업) System.Runtime.CompilerServices.ConfiguredTaskAwaitable1.ConfiguredTaskAwaiter.GetResult() at Microsoft.Azure.KeyVault.KeyVaultCredential.<ProcessHttpRequestAsync>d__10.MoveNext() at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
1.ConfiguredTaskAwaiter.GetResult() 에서 6,에서 Microsoft.Azure.KeyVault.KeyVaultClientExtensions.d__11.MoveNext() System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw에서 () System.Runtime에서 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (작업 작업)에서
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
. CompilerServices.TaskAwaiter,473,210 1.GetResult() C에서 NextDoorScanner.NextDoorScannerJob.d__4.MoveNext()에서 : \ 프로그래밍 \ CommunityScanner \ CommunityScanner \ NextDoorScannerJob.cs : 라인 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()에서 46에서 NextDoorScanner.Program에서 System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() 에서 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (작업 작업).메인 (문자열 []에 args) C에서 : \ 프로그래밍 \ CommunityScanner \ CommunityScanner \ Program.cs : 라인
(22) I 않았다, 내가 PowerShell을 통해, 푸른 사용자로 바탕 화면을 등록 포함 생각한 일부 구성 :
내가 GetSecretAsync에 볼트 키()를 제공 할 예정 해요 경우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
나는 분명 해요. 또한 새로 만든 UserCredential을 AcquireTokenAsync()에 전달하는 것 이외의 다른 작업을 수행해야하는지 궁금합니다. 마지막으로 중요한 온라인 볼트에 사용할 저장소 계정을 온라인으로 볼 수는 있지만 저장 계정의 "in"볼트를 만들지 않았습니다. 그리고 코드에서 스토리지 계정을 식별하지 못합니다.
도움말 또는 콘솔 데스크톱 앱에서 주요 볼트에 액세스하는 정말 좋은 예에 대한 참조는 감사하겠습니다.
Thanx, Tom. 의견과 아이디어뿐만 아니라 다른 SO 스레드에 대한 링크도 제공해 주셔서 감사합니다. –