Подтвердить что ты не робот

Аутентификация ASP.NET MVC 5 и WebApi 2

Недавно я создал веб-сайт MVC 5 в качестве прототипа переднего конца и использовал отдельные учетные записи для аутентификации. Теперь мне нужно создать бэкэнд WebApi2, который будет обслуживать этот сайт, а также приложение для iPhone и несколько других клиентов. Я смущен в отношении аутентификации с сайтом MVC и WebApi.

Я хочу, чтобы все управление пользователями происходило через WebApi (который будет использовать токены), чтобы он был агентом, но я не знаю, как будет проверяться аутентификация Cookie на стороне Сайта без моих классов Identity. Похоже, я буду дублировать код с сайтом MVC и WebApi. Я хочу использовать файлы cookie для сайта mvc, а также oauth tokens для webapi. Нужно ли мне создать другой проект, например IdentityProvider, для управления этим? Или есть чистый способ реализовать это, используя только проекты MVC и WebApi. Спасибо!

EDIT: меня в основном путают, как управлять идентификацией пользователя, когда пользователи могут входить в систему через сайт MVC и через запрос WebApi. Мне нужно иметь возможность генерировать UserIdentity и требования унифицированным образом, и я смущен, когда у меня есть как шаблон личной учетной записи MVC, так и шаблон проверки подлинности индивидуальной учетной записи WebApi2 для работы. Я хочу хранить пользователей, заявки и т.д. В экземпляре MongoDB, размещенном в AWS.

4b9b3361

Ответ 1

Оба шаблона (mvc и api) используют SigninManager и UserManager. Стандартная реализация пользовательского менеджера основана на SQL Server и Entity Framework.

Если вы хотите размещать пользовательские данные в MongoDB, лучшее решение для его собственного пользователя UserStore для реализации, по крайней мере, интерфейсов IUserStore и IUserRoleStore, или используйте this пакет nuget

Для UserManager вы можете использовать стандартную реализацию.

Идентификатор Asp.net, в котором вы используете его с открытым исходным кодом, и вы можете посмотреть на codeplex (тот, который находится на github для mvc 6).

Я думаю, что лучший способ справиться с вашим сценарием:

  • Для входа в веб-сайт, для стандартного веб-пользователя, выполните действие для входа в систему стандартный контроллер mvc и позволить SignInManager выполнять работу; вы может использовать стандартный метод входа, который поставляется с шаблоном
  • Для входа в api выполните простой OAuthAuthorizationServerProvider и переопределить метод GrantResourceOwnerCredentials; this это хорошая статья, которая показывает вам все шаги

Надеюсь, это поможет!

Ответ 2

Подумайте о том, что поставщик членства является отдельным и независимым от технологии, используемой для разработки приложения. Аутентификация - это аутентификация, не зависящая от конкретной технологии.

http://www.asp.net/identity/overview/getting-started/aspnet-identity-recommended-resources