我剛剛在我的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網站上使用Windows(對站點文件夾具有正確的訪問權限)或basic authentication,並禁用匿名身份驗證。
@bsoulier答案是完全合理的。另一種方法是使用JavaScript/AJAX。
我還沒有嘗試保護實際的swagger-ui索引頁面,因爲大多數時候在端點上進行身份驗證就足夠了。
但是任何JavaScript都可以輕鬆注入到index
頁面中,或者您可以使用自己的自定義index
頁面。這意味着您可以使用任何您想要的身份驗證。只需創建一個簡單的HTML表單,並使用AJAX撥打電話登錄用戶,然後再允許他們查看任何內容,或者在將其重定向到真正的swagger-ui頁面之前。
注漿JavaScript文件上傳到招搖的UI頁面從SwaggerConfig
:
c.InjectJavaScript(thisAssembly, "Your.Namespace.testScript1.js");
注射自定義索引頁面進入招搖的UI頁面從SwaggerConfig
:
c.CustomAsset("index", containingAssembly, "Your.Namespace.index.html");
您可以參考鏈接https://github.com/domaindrivend EV/Swashbuckle /問題/ 601 –