0

Winforms アプリケーションで Azure Key Vault を使用したいと考えています。アプリを Azure Active Directory に追加し、powershell を使用してキー コンテナーにシークレットを作成することができました。アプリはシークレットを使用するために認証されます。残念ながら、winforms アプリでシークレットを使用することはできません。私は例外を受け取ります:

*sts_token_request_failed: セキュリティ トークン サービスへのトークン要求が失敗しました。詳細については、InnerException を確認してください。

InnerException: AADSTS70002: 資格情報の検証中にエラーが発生しました。AADSTS50012: 無効なクライアント シークレットが指定されました。*

構成:

<appSettings>    
 <add key="ClientId" value="<appId>" />
 <add key="ClientSecret" value="<nameofsecret>" />   
 <add key="SecretUri" value="https://<vaultname>.vault.azure.net/secrets/<nameofsecret>" />
</appSettings>

私のコードは次のとおりです。

public static string GetSecret()
{
        var kv = new KeyVaultClient(new KeyVaultClient.AuthenticationCallback(GetToken));
        var sec = kv.GetSecretAsync(ConfigurationManager.AppSettings["SecretUri"]).Result.Value;
        return sec; 
}

public async static Task<string> GetToken(string authority, string resource, string scope)
    {
        var authContext = new AuthenticationContext(authority,true);
        ClientCredential clientCred = new ClientCredential(ConfigurationManager.AppSettings["ClientId"],
            ConfigurationManager.AppSettings["ClientSecret"]);
        try
        {
            AuthenticationResult result = authContext.AcquireToken(resource, clientCred);

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

            return result.AccessToken;
        }
        catch (Exception ex)
        {
            return String.Empty;
        }            
    }

マニフェストまたは app.config で何か変更する必要がありますか? secretName とは何ですか? powershellで作ったシークレットの名前ですか?ネイティブ クライアント アプリケーションでは、アクティブ ディレクトリにキーを追加するための「構成」タブがありません。これが問題ではないでしょうか?

4

1 に答える 1