2016-10-13 8 views
2

NSwagがIdentityServerXベアラトークンとやりとりする方法を正確には知りませんでした。私のホストapiアプリケーションはLDAP authでIdentityServer3を実装しています。いずれかのホストが認証用のトークンを必要とする場合、クライアントは要求ヘッダーでそれを送信する必要があります。それでNSwagクライアントを動かす際に、どうすれば対処できますか?リクエストヘッダのベアラトークンを必要とするNSwagクライアントメソッドを呼び出す方法は?

おかげさまで

答えて

4

私は部分的な方法で問題を解決しました。 私の例は次のとおりです。

CampaignClient.cs

public partial class CampaignClient 
{ 
    partial void PrepareRequest(HttpClient request, ref string url); 

    partial void ProcessResponse(HttpClient request, HttpResponseMessage response); 

    //some codes... 
} 

CampaignClient.Extensions.cs - パーシャルクラス:

public partial class CampaignClient 
{ 
    private readonly IRequestContext _requestContext; 
    private readonly IStartupConfiguration _startupConfiguration; 

    public CampaignClient(IRequestContext requestContext, IStartupConfiguration startupConfiguration) 
    { 
     _requestContext = requestContext; 
     _startupConfiguration = startupConfiguration; 
    } 

    partial void PrepareRequest(HttpClient request, ref string url) 
    { 
     request.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", _requestContext.GetBearerTokenOrTriggerUnauthException()); 
    } 
} 

メソッドのオーバーライドが私を救いました!

あなたが UseHttpClientCreationMethodまたは UseHttpRequestMessageCreationMethod

(Cfとhttps://github.com/NSwag/NSwag/blob/master/src/NSwag.CodeGeneration/CodeGenerators/CSharp/SwaggerToCSharpClientGeneratorSettings.cs)をspecifcyすることができますC#のクライアントのために

3

NSwagは、あなたがのHttpClientかのHttpRequestを作成するためのメソッドを実装する予定その方法。あなたはそこにあなたのヘッダーを設定することができます

+0

どのようにこれをSwaggerUiに使用できますか? – zuckerthoben

+0

これは、スワッガークライアントジェネレーターのオプションです。私が知っている限り、swagger UIは別のものです。クライアントジェネレータを使用してswagger UIが生成されているかもしれませんが、わかりません。おそらくこれを質問にしてください。 – Peter

+0

https://stackoverflow.com/questions/46236152/implement-jwtbearer-authentication-in-nswag-swaggerui @Peter – zuckerthoben

関連する問題