Идентификация ASP.NET с использованием WebApi & External Login - программирование
Подтвердить что ты не робот

Идентификация ASP.NET с использованием WebApi & External Login

Я снова застрял! Я пытаюсь внедрить безопасный сервис WebApi с идентификатором ASP.NET с использованием индивидуальной учетной записи. Услуга WebApi будет потребляться мобильным приложением, разработанным с помощью телефонного разговора. В моем приложении phonegap для входа в систему используются facebook и twitter, и я отлично реализовал это на клиенте.

Я создал проект SPA из шаблона визуальной студии, и я протестировал процесс входа в систему, отслеживая HTTP-запросы с помощью инструментов fiddler и chrome dev. Я пробовал следующие запросы, используя postman

GET: http://localhost:49577/api/Account/ExternalLogins?returnUrl=/&generateState=true

ОТВЕТ:

[{
        "Name": "Facebook",
        "Url": "/api/Account/ExternalLogin?provider=Facebook&response_type=token&client_id=self&redirect_uri=http%3A%2F%2Flocalhost%3A49577%2F&state=jpePf27F3ufkCCEldFdoOVMEGBGTEO1CrRdUQ3bHEP01",
        "State": "jpePf27F3ufkCCEldFdoOVHSGBGTEO1CrRdUQ3bHEP01"
}]

а затем я вызываю GET: http://localhost:49577/api/Account/ExternalLogin?provider=Facebook&response_type=token&client_id=self&redirect_uri=http%3A%2F%2Flocalhost%3A49577%2F&state=jpePf27F3ufkCCEldFdoOVMEGBGTEO1CrRdUQ3bHEP01 который вызывает метод GetExternalLogin AccountsController. Затем он возвращает экземпляр ChallengeResult, когда пользователь не аутентифицирован.

Вот где я застрял. Q1: ChallengeResult заставляет 301 переадресовать на страницу входа в facebook с некоторыми параметрами querystring. Я не хочу этого, я хочу, чтобы он дал мне параметры, но позвольте мне обработать ведение журнала в моем запросе ajax. Я пробовал комментировать эту строку кода

Request.GetOwinContext().Authentication.Challenge(LoginProvider);

но я получаю 401 с чем-то еще, как я могу контролировать, что ответ от ChallegeResult?

Q2. Кроме того, я не могу понять, что дальше отсюда, после того, как я получу токен доступа из facebook, какую конечную точку webapi я должен вызвать, если я уже получил токен доступа, что мне следует передать ему?

У меня есть googled весь день, но я не могу найти ничего, что отвечает на мой вопрос. Любая помощь будет оценена по достоинству. Благодаря

UPDATE:

Относительно Q2; Я понял следующий шаг, и это GET: http://localhost:49164/signin-facebook?code=...&state=...

Это возвращает еще 302, который перенаправляется на

http://localhost:49164/api/Account/ExternalLogin?provider=Facebook&response_type=token&client_id=self&redirect_uri=http%3A%2F%2Flocalhost%3A49164%2F&state=7oGPd37EA-nmtXPtYEQ40qnretDeKjbPEM1gNkb2DuM1

который, в свою очередь, возвращает еще 302, который затем перенаправляется на

http://localhost:49164/#access_token=...

Итак, как мне обрабатывать все переадресации с мобильного клиента без браузера?

UPDATE

Я пытаюсь найти действие контроллера, которое обрабатывает  http://localhost:49164/signin-facebook?code=...&state=... Может ли кто-нибудь помочь?

UPDATE С тех пор я опубликовал этот вопрос, много узнав о потоке входа в facebool, который, возможно, я должен был сделать раньше! У меня все еще есть один вопрос, но я создал другой вопрос для этого здесь, чтобы сохранить беспорядок

4b9b3361

Ответ 1

Ответ на этот вопрос очень подробный. Поэтому, чтобы это стало проще, я собираюсь указать вам пример, который показывает вам, как вы можете иметь приложение SPA и подключать разные клиенты (телефон, планшеты и т.д.) И логин с помощью социальных входов, таких как Facebook и т.д. https://aspnet.codeplex.com/SourceControl/latest#Samples/WebApi/Todo/ReadMe.txt