Я использую swagger. net для создания документации api и хочу включить аутентификацию API-KEY для пользовательского интерфейса swagger. Пока я пробовал это.
public class SwaggerConfig
{
public static void Register()
{
var thisAssembly = typeof(SwaggerConfig).Assembly;
GlobalConfiguration.Configuration
.EnableSwagger(c =>
{
c.ApiKey("apiKey", "header", "API Key Authentication", typeof(KeyAuthorizeAttribute));
}
}
}
Файл KeyAuthorizeAttribute.cs содержит:
public class KeyAuthorizeAttribute : AuthorizeAttribute
{
static string _password = null;
private string Password
{
get
{
if (string.IsNullOrEmpty(_password))
_password = ConfigurationManager.AppSettings["PASSWORD"];
return _password;
}
}
protected override bool IsAuthorized(HttpActionContext actionContext)
{
IEnumerable<string> apiKey;
if (actionContext.Request.Headers.TryGetValues("apiKey", out apiKey))
{
return apiKey.First() == Password;
}
return false;
}
}
ConfigurationManager.AppSettings ["ПАРОЛЬ"] в файле Web.config установлено значение 12345
![enter image description here](https://i.stack.imgur.com/FjOKH.png)
Я могу получить кнопку авторизации, но она принимает все случайные строки, числа и авторизацию, чем взятие пароля, установленного в файле web.config.
Предположим, пользователь вводит ключ api как «suyguhuus» (любая случайная строка / числа), он должен быть неавторизованным и должен принимать только значение «ПАРОЛЬ», определенное в Web.config, и позволять пользователю связываться с его API только в том случае, если пользователь авторизован.
Кто-нибудь может помочь с авторизацией вышеупомянутого варианта использования.