Вызов webapi только тогда, когда клиент установил сертификат на своем компьютере.

Я хотел добавить слой безопасности через сертификат для доступа к размещенному asp.net webapi.

Я хочу, чтобы только те клиенты, которые установили сертификат на своем компьютере, могли иметь доступ к этому webapi.

Может ли кто-нибудь предоставить мне способ добиться этого поведения. пример или видео будет оценено.

2 ответа

Вы можете настроить IIS для запроса клиентских сертификатов без написания одной строки кода. Просто следуйте этим инструкциям, а именно:

  1. Нажмите Настройки SSL на средней панели и выберите Требовать SSL и Требовать для клиентских сертификатов.

  2. Дважды щелкните значок аутентификации и отключите все методы аутентификации.

  3. Убедитесь, что установлена ​​аутентификация сопоставления сертификатов клиента IIS.

  4. Нажмите Редактор конфигурации на средней панели и установите однозначные сопоставления, перейдите по этой ссылке

Как и предлагалось в комментариях, быстрый поиск в 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() { ... }
}
Другие вопросы по тегам