0

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

Я выполнил шаги, описанные в Microsoft's documentation, чтобы создать проект с использованием шаблона веб-API Visual Studio. У меня уже есть Facebook Id приложение & секрет, я установил OAuth перенаправления URI на панели Facebook, соответственно, и я установил Id & секрет в файле Startup.Auth.cs:

app.UseFacebookAuthentication(
appId: "***", 
appSecret: "***"); 

Затем я создал базу данных LocalDB и установить web.config DefaultConnection строки:

<add name="DefaultConnection" connectionString="Data Source=(LocalDb)\v11.0;Initial Catalog=webapidb;Integrated Security=True;Pooling=False" providerName="System.Data.SqlClient" /> 

при запуске проекта, я могу использовать метод Account.GetExternalLogin (/ API/счет/ExternalLogin/поставщик = Facebook?) с GET, чтобы инициировать вход. Я перенаправлен на страницу одобрения Facebook, а затем, когда перенаправляется обратно на GetExternalLogin, я вижу, что параметр «ошибки» имеет значение null. Я также добавил часы на User.Identity.IsAuthenticated, и он оценивает значение true внутри метода.

До сих пор все как ожидается.

Но однажды GetExternalLogin метод завершается, я пытаюсь вызвать любого [Authenticate] -decorated метода (например, /апи/значение/3) и я получаю HTTP401 Несанкционированную ошибку.

Еще одна вещь заключается в том, что когда я открываю таблицу AspNetUsers, нет записей, я ожидал увидеть мой идентификатор Facebook и имя пользователя, сохраненные там.

Не могли бы вы объяснить, как должен использоваться клиентский механизм аутентификации, и что нужно сделать, чтобы иметь идентификатор пользователя и имя, сохраненные в базе данных?

Спасибо!

ответ

0

Всего месяц назад у меня были такие же сомнения.

На самом деле вы должны попытаться отключить сервер ресурсов (API) с вашего сервера авторизации/аутентификации. Взгляните на потоки OAuth2, чтобы полностью понять, о чем я говорю.

Я использую this open source project, эти ребята gavesus сервер авторизации с открытым идентификатором для части аутентификации, единственное, что вам нужно сделать, это настроить его на свои нужды.

Вот некоторые вопросы, которые я просил об этой теме

https://security.stackexchange.com/questions/115799/what-to-do-for-my-web-api-authentication-scheme

Rest API authentication mechanism, what to do

Relation to users when these are stored in an external Identity provider service

How to secure my API

Также проверьте курсы Pluralsight от Kevin Dockx, это очень хорошо объясняет весь процесс, от создание api, настройка сервера идентификации и способы использования службы от клиента MVC.