Цель : У меня есть существующий веб-сайт ASP.NET MVC, созданный пару лет назад, и я хотел бы поделиться управлением идентификацией с новым приложением ReactNative, которое я создаю.
Я бы хотел, чтобы пользователи могли входить как в сеть, так и в приложение, и иметь бесшовную интеграцию, используя одного и того же пользователя на обеих сторонах. Он также должен поддерживать вход в систему через Facebook и Google+, который в настоящее время поддерживается веб-сайтом ASP.NET MVC с использованием входящего в комплект Oauth2 OWIN входа.
Чтобы снизить затраты, я хотел бы использовать функцию Azure для максимально возможного / всех вызовов, используемых в приложении ReactNative.
Задача
Я немного озадачен тем, как это будет работать, поскольку он так тесно связан с проектом ASP.NET MVC, во всех частях (вход в систему, регистрация, изменение пароля, забытый пароль и т. Д.) Используется встроенный Методы аутентификации ASP.NET с использованием SignInManager и т. Д.
план
Мой план состоял в том, чтобы сделать следующее, но я был бы очень признателен всем, кто может дать мне какие-либо идеи, в частности.
- Расскажите мне о лучшем способе сделать это
- Скажите мне, если / почему я глуп или неуверен с моим текущим планом
- Будет ли это даже работать
- Любые другие предложения о том, как решить проблему более элегантным способом
Мой план следующий:
Используйте функции Azure для всего, например, Вход в систему, регистрация и т. Д., Что делает его масштабируемым, а также очень дешевым и не требует установки другого сервера где-нибудь
Добавьте функцию Azure для входа в систему, которая принимает имя пользователя и пароль, функция выполняет хэш предоставленного пароля и проверяет базу данных на наличие соответствующего имени пользователя, если пароль совпадает, тогда предоставьте JWT, который позволит любые дальнейшие вызовы для передачи этого в качестве маркера-носителя для аутентифицированных запросов.
Добавьте функцию Azure в регистр, которая будет принимать обычные данные, имя пользователя, адрес электронной почты и т. Д. Функция проверит БД, чтобы увидеть, существует ли пользователь, если это так, выдает исключение, если нет, то вручную добавьте запись в таблицу asp_users
, а затем отправьте обратно JWT с токеном, необходимым для любых будущих аутентифицированных запросов.
Что касается аутентификаций в Facebook и Google+, я планировал использовать их SDK JavaScript для аутентификации, а затем отправить код доступа, предоставленный функции Azure. Затем его можно использовать для запроса к Facebook / Google API для получения адресов электронной почты, если адрес электронной почты существует, то верните их данные в токене JTW, если не создадите пользователя, а затем отправьте обратно токен. Я не знаю, будет ли это работать с настройкой MVC, однако, если пользователь затем пытается войти в систему с помощью Интернета?
Все токены JTW будут содержать имя пользователя, так что любые предпринятые действия могут быть проверены / записаны в отношении этого пользователя в течение срока действия токена, или они выйдут из системы и потребуют повторного входа.
Заранее большое спасибо, я уже почти 2 месяца чесал голову и до сих пор не решился на самом деле делать кодирование. Моя цель состояла в том, чтобы завершить работу над приложением к весне, но мне нужно выяснить эту важную часть, прежде чем я смогу двигаться дальше.
Заранее большое спасибо.