WebAPIプロジェクトにSwashbuckleをインストールしましたが、これまでのところ、/swagger
apiエンドポイントは公開されていますがSwaggerとWebAPI(Swashbuckle) -/swaggerエンドポイントを非公開にしていますか?
モバイルアプリのデベロッパーへのアクセスのみを許可します。パスワードの後にAPIを非表示にするにはどうすればいいですか?
WebAPIプロジェクトにSwashbuckleをインストールしましたが、これまでのところ、/swagger
apiエンドポイントは公開されていますがSwaggerとWebAPI(Swashbuckle) -/swaggerエンドポイントを非公開にしていますか?
モバイルアプリのデベロッパーへのアクセスのみを許可します。パスワードの後にAPIを非表示にするにはどうすればいいですか?
私は以下でこれを達成:
protected override Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) {
string username = null;
if (Thread.CurrentPrincipal.Identity != null && Thread.CurrentPrincipal.Identity.Name != null) {
username = Thread.CurrentPrincipal.Identity.Name.ToLower();
}
if (IsSwagger(request) && username != "Admin") {
var response = request.CreateResponse(HttpStatusCode.Unauthorized);
return Task.FromResult(response);
}
else {
return base.SendAsync(request, cancellationToken);
}
}
private bool IsSwagger(HttpRequestMessage request) {
return request.RequestUri.PathAndQuery.StartsWith("/swagger");
}
IISでホストされているプロジェクトの場合は、IIS WebサイトでWindows(サイトフォルダへの適切なアクセス権を持つ)またはbasic authenticationのいずれかを使用して匿名認証を無効にすることができます。
@bsoulier答えは完全に合理的です。別の方法は、JavaScript/AJAXを使用することです。
エンドポイントのほとんどの認証で十分であるため、実際のswagger-uiインデックスページの保護は試していません。
いずれのJavaScriptもindex
ページに簡単に挿入することも、独自のカスタムindex
ページを使用することもできます。つまり、必要な認証を使用できます。シンプルなHTMLフォームを作成し、AJAXを使用してユーザーにログインしてからコンテンツを見ることができるようにするか、実際のswagger-uiページにリダイレクトするだけです。
SwaggerConfig
から威張っ-UIページにJavaScriptファイルを注入:SwaggerConfig
から威張っ-UIページにカスタムインデックスページを注入
c.InjectJavaScript(thisAssembly, "Your.Namespace.testScript1.js");
:
c.CustomAsset("index", containingAssembly, "Your.Namespace.index.html");
リンクhttps://github.com/domaindrivendを参照できます。 ev/Swashbuckle/issues/601 –