2016-07-11 4 views
2

Я знаю, что это очень распространенный вопрос. Но я действительно не знаю, как его интегрировать. Я хочу добавить аутентификацию в свои веб-службы api. Сейчас я создал одно консольное приложение для вызова метода службы.Аутентификация в веб-API

Я прошел через это blog. Я просто хочу реализовать фильтр проверки подлинности, как указано в этой статье.

Я хочу знать, как я могу передавать учетные данные вместе с HTTPClient из моего консольного приложения, извлекать эти вещи в веб-API и проверять их подлинность.

Я создал фильтр аутентификации, но не вызывает метод аутентификации AuthenticateAsync.

Чтобы передать клиенту HTTP я сделал это:

public void GetData() 
    { 
     HttpClient cons = new HttpClient(); 
     cons.BaseAddress = new Uri("http://localhost:50524/"); 
     cons.DefaultRequestHeaders.Accept.Clear(); 
     cons.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); 
     var data = Encoding.ASCII.GetBytes("Ankita:ankita123"); 
     var header = new AuthenticationHeaderValue("Basic", Convert.ToBase64String(data)); 
     cons.DefaultRequestHeaders.Authorization = header; 

     //MyAPIPost(cons).Wait(); 
     MyAPIGet(cons).Wait(); 
    } 
+0

Отметьте это сообщение в блоге: http://code.tutsplus.com/tutorials/securing-aspnet-web-api--cms-26012 – peco

ответ

0

Я успешно выполнил аутентификацию с использованием статьи this. В этом атрибуте фильтра реализовано.

3

Обучение, как реализовать аутентификацию в Web API займет много времени. Лучше придерживаться онлайн-уроков.

В блоге, который вы прочитали, рассматриваются различные проверки подлинности для ASP.NET. Поскольку вы отметили свой вопрос как ASP.NET Web API 2, я бы предложил использовать аутентификацию на основе токенов с использованием промежуточного программного обеспечения OWIN. Проверьте this. В руководстве используется консольное приложение для проверки запросов к веб-API.

Суть этого является ...

Client> Токен Provider (Генерировать маркер для действительного пользователя)> Web API> Проверьте Токен действителен (Existing и не истек)> Аутентифицировать!

+0

Мне нужно реализовать атрибут типа. Чтобы мы могли использовать его глобально или для конкретного метода. Является ли это возможным? – Ankita

+0

С помощью Web API вы можете просто пометить метод или сетевой api-контроллер атрибутом '[Authorize]', если вы хотите реализовать аутентификацию. Конечно, вы должны внедрить поставщика, как показано в связанном учебнике. –

+0

Согласен, аутентификация на основе токенов лучше, чем передача паролей. – Alex

0

Учитывая вы пытаетесь получить доступ к API с HTTPClient, вы можете передать его экземпляр HttpClientHandler при его создании, что позволяет установить учетные данные, которые будут использоваться, когда он выполняет запросы:

new HttpClient(new HttpClientHandler { Credentials = new NetworkCredential(userName, password) }) 

Надеюсь, это поможет!

Смежные вопросы