Ответ 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, и те ссылки, которые вы включили, показывают вам некоторые из них. Надеюсь, эта информация поможет вам немного, извините, я не мог больше помочь.