Регистрация внешних входов в Web API 2 от нескольких клиентов API с помощью OWIN Identity

Я хотел бы следующую архитектуру (ямы составили название продукта для этого примера):

Приложение Web API 2, работающее на одном сервере http://api.prettypictures.com

Клиентское приложение MVC 5, запущенное на другом сервере http://www.webpics.com

мне бы хотелосьwww.webpics.com клиентское приложение для использования API Pretty Pictures для:

Зарегистрируйте новые учетные записи с именем пользователя и паролемЗарегистрируйте новые учетные записи в Facebook / Google / Twitter / MicrosoftАвторизоватьсяПолучить фотографии

Все вышеперечисленное работает за исключением регистрации внешних аккаунтов в Facebook, Google и т. Д.

Я не могу выработать правильный поток для созданиявнешний аккаунт от отдельного клиента пользователя API.

Я изучил большинство документов, доступных в процессе аутентификации, например:

Я прочитал почти все, что я могу о новой модели идентичности в OWIN.I '

мы изучили шаблон SPA в Visual Studio 2013. Он демонстрирует, как делать большую часть того, что мне нужно, но только когда клиент и API находятся на одном хосте; если я хочу, чтобы несколько клиентов обращались к моему API и позволяли пользователям регистрироваться через Google и т. д., это нет, и, насколько я могу судить, разрывает поток аутентификации OWIN.

Вот поток пока:

Пользователь просматриваетwww.webpics.com/Loginwww.webpics.com звонкиapi.prettypictures.com/Account/ExternalLogins (сReturnUrl установить, чтобы вернуться к обратному вызову вwww.webpics.com) и отображает полученные ссылки на пользователяПользователь нажимает "Google»Браузер перенаправляет наapi.prettypictures.com/Account/ExternalLogin с названием провайдера и т. д.APIExternalLogin действие создает вызовgoogle.comБраузер перенаправлен наgoogle.comПользователь вводит свое имя пользователя и пароль (если они еще не вошли вgoogle.com)google.com Теперь представляем оформление безопасности:api.prettypictures.com» хотел бы получить доступ к вашему адресу электронной почты, имени, жене, детям и т. д. Это нормально?Пользователь нажимает "Ага" и возвращаетсяapi.prettypictures.com/Account/ExternalLogin с cookie, который установил Google.

Это где ямы застряли Что должно произойти дальше, так или иначе, клиентское приложение должно быть уведомлено, что пользователь успешно прошел аутентификацию сgoogle.com и получить одноразовый код доступа для замены токена доступа позже. Клиентское приложение должно иметь возможность при необходимости запрашивать у пользователя имя пользователя для связи с егоgoogle.com авторизоваться.

Я нене знаю, как облегчить это.

На самом деле в этот момент браузер в конечном итоге сел наapi.prettypictures.com/Account/ExternalLogin конечная точка после обратного вызова от Google. API авторизован для Google, но клиент нене знаю, как с этим справиться. Должен ли я передать это печенье обратноwww.webpics.com?

В приложении SPA это делается через AJAX иgoogle.com вернет токен в виде фрагмента URL, и все это прекрасно работает, потому что все это находится в одном домене. Но это бросает вызов большей части смысла "API» что несколько клиентов могут полностью использовать.

Помогите!

Ответы на вопрос(1)

Ваш ответ на вопрос