WEB API аутентификация с разных платформ

Мне нужно создать приложение API, к которому будут обращаться с разных платформ (WEB, WPF, Mobile). API будет размещаться в Azure, а клиентом будут различные веб-сайты и приложения для настольных компьютеров / мобильных устройств. API должен знать имя пользователя для возврата информации о пользователе

У меня есть некоторые проблемы с аутентификацией прямо сейчас. Я использовал идею из этой ветки, как сделать аутентификацию форм в API, но там есть проблема, я должен аутентифицировать каждый запрос к API, потому что cookie, который я создал в предыдущем запросе, не сохраняется в следующем запросе.

Я подумываю о создании там какого-то специального решения: когда запрос на вход в API, отправленный с именем пользователя / паролем, возвращает какой-то токен, который я сохраню на клиенте и передам с каждым запросом. В этом случае я могу переопределить AuthorizeAttribute и проверить токен. но я не верю, что тогда мне следует создать собственное решение и предпочесть найти способ использовать то, что Microsoft сделала для меня.

Как лучше всего пройти аутентификацию в WEB API с разных платформ? В случае, если я верну токен, каков наилучший способ его создания, кодирования, истечения срока действия...?

1 ответ

Насколько мне известно, в настоящий момент нет ничего доступного из коробки. С OWIN есть вещи, подходящие. Вы можете взглянуть на исходный код Katana (Microsoft.Owin.Security). Для веб-токена JSON у Microsoft есть обработчик веб-токена JSON. Больше информации здесь. JSON Web Token Handler может как создавать, так и проверять JWT. Вы можете использовать одну и ту же библиотеку для выдачи и проверки JWT соответственно от издателя токена и вашего веб-API. Создать всю эту инфраструктуру непросто. Сервер идентификации Thinktecture и модель идентификации могут упростить эти задачи. Оба с открытым исходным кодом, и вы можете взглянуть на исходный код в GitHub. Проверьте это и это. Еще один хороший ресурс - блог Доминика.

Другие вопросы по тегам