Регистрация внешних входов в 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» что несколько клиентов могут полностью использовать.
Помогите!