Вызов webapi только тогда, когда клиент установил сертификат на своем компьютере.
Я хотел добавить слой безопасности через сертификат для доступа к размещенному asp.net webapi.
Я хочу, чтобы только те клиенты, которые установили сертификат на своем компьютере, могли иметь доступ к этому webapi.
Может ли кто-нибудь предоставить мне способ добиться этого поведения. пример или видео будет оценено.
2 ответа
Вы можете настроить IIS для запроса клиентских сертификатов без написания одной строки кода. Просто следуйте этим инструкциям, а именно:
Нажмите Настройки SSL на средней панели и выберите Требовать SSL и Требовать для клиентских сертификатов.
Дважды щелкните значок аутентификации и отключите все методы аутентификации.
Убедитесь, что установлена аутентификация сопоставления сертификатов клиента IIS.
Нажмите Редактор конфигурации на средней панели и установите однозначные сопоставления, перейдите по этой ссылке
Как и предлагалось в комментариях, быстрый поиск в Google может привести к интересным результатам.
Тем не менее, возможное решение - реализация, предложенная в следующей статье Microsoft:
public class RequireHttpsAttribute : AuthorizationFilterAttribute
{
public override void OnAuthorization(HttpActionContext actionContext)
{
if (actionContext.Request.RequestUri.Scheme != Uri.UriSchemeHttps)
{
actionContext.Response = new HttpResponseMessage(System.Net.HttpStatusCode.Forbidden)
{
ReasonPhrase = "HTTPS Required"
};
}
else
{
base.OnAuthorization(actionContext);
}
}
}
Затем вы бы украсили свое действие ApiController:
public class SomeController : ApiController
{
[RequireHttps]
public HttpResponseMessage Get() { ... }
}