2017-05-05 16 views
1

API Swaggerファイルに基づいてクライアントコードを生成するためにAutoRestを使用しています。AutoRestクライアントを使用してクライアント証明書を渡す方法

クライアント証明書をAPIに渡そうとしています。しかし、生成されたクライアントコードはWebRequestHandlerを受け入れないことに注意してください。私はここで何かが欠けてるように私は感じ

public MyTestApiV1(Uri baseUri, params DelegatingHandler[] handlers) : this(handlers) 
     { 
      if (baseUri == null) 
      { 
       throw new ArgumentNullException("baseUri"); 
      } 
      this.BaseUri = baseUri; 
     } 

生成されたコードは以下のようになります。 AutoRestを使用してクライアント証明書を送信した人は誰ですか?

はこれを試みたが、webRequestHandlerは常にnullです:

/// <summary> 
/// Initializes ServiceClient using base HttpClientHandler and list of handlers. 
/// </summary> 
/// <param name="rootHandler">Base HttpClientHandler.</param> 
/// <param name="handlers">List of handlers from top to bottom (outer handler is the first in the list)</param> 
protected ServiceClient(HttpClientHandler rootHandler, params DelegatingHandler[] handlers) 

ServiceClientが発生したクライアントの基本クラスです:

var webRequestHandler = client.HttpMessageHandlers.First() as WebRequestHandler; 
      if (webRequestHandler != null) 
      { 
       var secretRetrieved = keyVault.GetSecretAsync("my-cert"); 
       var pfxBytes = Convert.FromBase64String(secretRetrieved.Result); 
       // or recreate the certificate directly 
       var certificate = new X509Certificate2(pfxBytes); 
       webRequestHandler.ClientCertificates.Add(certificate); 
      } 
+0

:したがって、コードは次のようになります。 //sackoverflow.com/questions/34506086/how-to-restsharp-add-client-certificate-in-https-request-cクライアント証明書を追加します。 –

+0

それはautorest codegenによって生成されたコードです –

+0

右。私はAutorestによって生成されたC#コードに慣れていません。私の提案は、C#APIクライアントにクライアント証明書を添付する方法がある別のジェネレータを試すことです。 –

答えて

1

はあなたが別のオーバーロードされたコンストラクタを使用することができます。あなたが代わりにC#のAPIクライアントを生成し、HTTPに従って[闊歩codegenの](https://github.com/swagger-api/swagger-codegen)を使用して試してみたいことがあり

var secretRetrieved = keyVault.GetSecretAsync("my-cert"); 
var pfxBytes = Convert.FromBase64String(secretRetrieved.Result); 
// or recreate the certificate directly 
var certificate = new X509Certificate2(pfxBytes); 
WebRequestHandler webRequestHandler = new WebRequestHandler(); 
webRequestHandler.ClientCertificates.Add(certificate); 
var client = new MyTestApiV1(webRequestHandler); 
client.BaseUri = baseUri; 
関連する問題