ASP.NET Core Web API + Angular 2 авторизация и аутентификация

У меня есть приложение Angular 2, которое разговаривает с веб-API и выполняет некоторые основные операции CRUD. У меня есть несколько вопросов:

  1. любым способом я могу создать страницу входа / регистрации на Angular 2, используя ASP.NET личность?
  2. Как манипулировать данными, относящимися только к зарегистрированному пользователю? (Аутентификация На Основе Токенов? Как это работает? Где об этом прочитать?)
  3. как я могу реализовать процесс входа / регистрации в реальном приложении Angular 2 без перенаправления мне на сервер идентификации?

Я посмотрел на примеры IdentityServer4, OAuth2 и OpenID, это слишком сложно понять. Я прошел через каждый шаг в quick start, он работает, но я не понимаю, как и что он делает.

может кто-нибудь дать мне какие-либо ресурсы, где я могу начать? Блоги, веб-сайты, книги, пошаговые руководства.

1 ответов


вы правы, что на данный момент наиболее комплексные решения для аутентификации и авторизации в системах, которые в значительной степени полагаются на HTTP, основаны на OAuth 2.0 и OpenID Connect. Это касается конкретного сценария СПА вызова веб-API серверной. Для дальнейшего чтения в этом общем случае вы можете проверить Auth0 SPA + сценарий архитектуры API или посмотрите на quickstarts, сосредоточенные на выбранном вами технологии:

Примечание: Auth0 поддерживает OAuth 2.0/OpenID Connect, поэтому, хотя документы могут иметь дополнительные функции, специфичные для поставщика, вы можете найти их полезными, если вы действительно решите пройти маршрут OAuth 2.0/OpenID Connect. Один из пунктов преимущества полагаться на стандартах, легче переключить между реализация/поставщики.

однако, вы также должны рассмотреть, действительно ли вам нужно идти полным OAuth 2.0/OpenID Connect, поскольку они направлены на решение множества различных вариантов использования и как таковые также приносят значительную сложность с ними. Если вы идете по этому маршруту, рекомендуется использовать существующие библиотеки, такие как IdentityServer или облачные поставщики, такие как Auth0, потому что выполнение собственной реализации несет большой риск и требует значительных усилий.

для того чтобы соотвествовать ваши требование предоставления интегрированного входа из вашего собственного интерфейса Angular2 вы, вероятно, могли бы посмотреть на предоставление учетных данных пароля владельца ресурса, указанных OAuth2.

Другой альтернативой является выполнение собственного пользовательского решения, это обычно не одобряется, потому что легко ошибиться, но теория будет:

  1. обрабатывать аутентификацию и регистрацию пользователей (возможно, используя ASP .NET Identity)
  2. при входе пользователя exchange учетные данные с некоторым токеном, который вы можете позже использовать для вызова API

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