Подтвердить что ты не робот

Внедрение внешней аутентификации для мобильного приложения в ASP.NET WebApi 2

Я пытаюсь создать API (используя ASP.NET WebApi), который будет использоваться родным мобильным приложением для школьного проекта. (Меня не интересует/разрабатывает мобильное приложение, эта ответственность лежит на другом члене) Я нахожусь в точке, где мне нужно реализовать вход на основе токенов Facebook. Существует множество обучающих программ для реализации этой функции для приложений на базе браузера (это довольно прямолинейно, и большинство из них встроено), но я не думаю, что я буду следовать тому, как это будет работать с родными приложениями. Я не понимаю, как будут работать перенаправления?

В соответствии с этой ссылкой ничего не нужно обрабатывать именно моим сервером. И я не думаю, что понимаю, как это сработает? Как обрабатывать токены из Facebook?

Кроме того, какую часть обработки токенов следует реализовать, я не смог найти хорошую документацию для аутентификации внешнего входа WebApi.

В любом случае, если кто-то может указать мне на точный поток токенов, которые происходят и что реализовано по умолчанию ASP.NET, это было бы очень полезно.

Кроме того, самая большая путаница для меня - я не понимаю, как будет обрабатываться токен, возвращенный Facebook.

  • Я предполагаю, что токен будет возвращен клиенту (мобильному приложению), как мне получить доступ к нему на моем сервере?
  • Как создать локальный токен из токена facebook? Это все сделано внутренне/автоматически-магически с помощью ASP.NET?

Прости, если это то, что я должен был понять. Я сделал довольно много исследований, и я обнаружил, что утопаю в (связанной и несвязанной) информации. Я не думаю, что я даже знаю, как искать нужную мне информацию.

Некоторые ссылки, которые я прочитал:

Требования и аутентификация на основе токенов (веб-API ASP.NET)

Аутентификация на основе токена с использованием ASP.NET Web API 2, Owin и Identity

Внешние логины ASP.NET Web API 2 с Facebook и Google в приложении AngularJS

4b9b3361

Ответ 1

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

Я помню две из опубликованных вами ссылок "Искания на основе утверждений и токенов" и "Внешние логины ASP.NET Web API 2 с Facebook и Google в приложении AngularJS" как те, которые имели полезную информацию.

Я не могу дать вам исчерпывающий ответ, так как не помню всего, что я должен был делать, и даже не понимал, что я делал в то время, но я могу дать вам общую идею. Вы на правильном пути.

По сути, я в конечном итоге использовал токен, предоставленный Facebook, чтобы подтвердить, что они вошли в свою учетную запись Facebook, создали пользователя на основе их идентификатора пользователя Facebook и предоставили им свой собственный токен-носитель, который они могут использовать для доступа к моему API.

Поток выглядит примерно так:

  • Клиент аутентифицируется с помощью Facebook любым способом (мы использовали oauth.io)
    • Facebook возвращает им токен
  • Клиент отправляет данные маркера в конечную точку регистрации моего контроллера WebApi
    • Токен проверяется с помощью API-интерфейса Facebook, который возвращает информацию о пользователе
    • Пользователь создается в базе данных через идентификатор ASP.NET с их идентификатором пользователя Facebook в качестве ключа
  • Клиент отправляет данные токена в конечную точку аутентификации моего контроллера WebApi
    • Токен проверяется с помощью API-интерфейса Facebook, который возвращает информацию о пользователе
    • Информация о пользователе используется для поиска пользователя в базе данных, подтверждения, что они ранее зарегистрировались
    • Идентификатор ASP.NET используется для создания нового токена для этого пользователя.
    • Этот токен возвращается клиенту
  • Клиент включает заголовок авторизации во всех будущих HTTP-запросах с новым токеном, предоставленным моей службой (например, "Авторизация: носитель TOKEN" )
    • Если конечная точка WebApi имеет атрибут [Authorize], ASP.NET Identity автоматически проверяет токен-носитель и отказывает в доступе, если он недействителен

В итоге появилось много настраиваемого кода для реализации OAuth с идентификатором ASP.NET, и те ссылки, которые вы включили, показывают вам некоторые из них. Надеюсь, эта информация поможет вам немного, извините, я не мог больше помочь.