NSwagがIdentityServerXベアラトークンとやりとりする方法を正確には知りませんでした。私のホストapiアプリケーションはLDAP authでIdentityServer3を実装しています。いずれかのホストが認証用のトークンを必要とする場合、クライアントは要求ヘッダーでそれを送信する必要があります。それでNSwagクライアントを動かす際に、どうすれば対処できますか?リクエストヘッダのベアラトークンを必要とするNSwagクライアントメソッドを呼び出す方法は?
おかげさまで
NSwagがIdentityServerXベアラトークンとやりとりする方法を正確には知りませんでした。私のホストapiアプリケーションはLDAP authでIdentityServer3を実装しています。いずれかのホストが認証用のトークンを必要とする場合、クライアントは要求ヘッダーでそれを送信する必要があります。それでNSwagクライアントを動かす際に、どうすれば対処できますか?リクエストヘッダのベアラトークンを必要とするNSwagクライアントメソッドを呼び出す方法は?
おかげさまで
私は部分的な方法で問題を解決しました。 私の例は次のとおりです。
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#のクライアントのために
NSwagは、あなたがのHttpClientかのHttpRequestを作成するためのメソッドを実装する予定その方法。あなたはそこにあなたのヘッダーを設定することができます
どのようにこれをSwaggerUiに使用できますか? – zuckerthoben
これは、スワッガークライアントジェネレーターのオプションです。私が知っている限り、swagger UIは別のものです。クライアントジェネレータを使用してswagger UIが生成されているかもしれませんが、わかりません。おそらくこれを質問にしてください。 – Peter
https://stackoverflow.com/questions/46236152/implement-jwtbearer-authentication-in-nswag-swaggerui @Peter – zuckerthoben