identity Выбор решения для управления
Большинство веб-приложений поддерживают проверку подлинности, чтобы гарантировать, что пользователи являются пользователями, которые они утверждают. Пользователь может быть человеком или другим приложением. Управление доступом гарантирует, что пользователи смогут просматривать и изменять информацию, которую они авторизованы для просмотра и изменения. Например, у конечного пользователя нет доступа к административному разделу веб-сайта. Identity Решения по управлению создаются для обработки требований к задачам проверки подлинности и авторизации. Дополнительные сведения об управлении см. в identity статье "Что такое identity и управление доступом?". Многие identity решения по управлению для веб-приложений .NET доступны, каждый из которых имеет различные возможности и требования к использованию или установке. В этой статье приводятся рекомендации по выбору подходящего решения.
Базовое identity управление с помощью ASP.NET Core Identity
ASP.NET Core поставляется со встроенным поставщиком проверки подлинности: ASP.NET Core Identity. Поставщик включает API, пользовательский интерфейс и конфигурацию серверной базы данных для поддержки управления удостоверениями пользователей, хранения учетных данных пользователя и предоставления или отзыва разрешений. К другим функциям, которые она поддерживает, относятся:
- Внешние имена входа
- Двухфакторная проверка подлинности (2FA)
- Управление паролями
- Блокировка учетной записи и повторная активация
- Приложения Authenticator
В большинстве случаев это может быть единственным поставщиком.
Чтобы получить дополнительные сведения, обратитесь к разделу
- Общие сведения о Identity ASP.NET Core
- Следуйте инструкциям по созданию собственного защищенного веб-приложения .NET: защита веб-приложения .NET с помощью платформы ASP.NET CoreIdentity.
В других сценариях сервер или служба, которая управляет проверкой подлинности и identity может оказаться полезной.
Определение необходимости сервера OIDC
Для веб-приложений требуется способ запоминать прошлые действия, так как веб-сайт по умолчанию является без отслеживания состояния. В противном случае пользователи будут вынуждены вводить свои учетные данные при каждом переходе на новую страницу. Общим решением для запоминания состояния являются файлы cookie, механизм на основе браузера для хранения данных. Веб-сервер отправляет начальный cookie, затем браузер сохраняет его и отправляет его обратно с каждым запросом. Это делается автоматически, не требуя от разработчика написания кода. Файлы cookie легко использовать и встроены в браузер, но предназначены для использования в одном веб-сайте или веб-домене. Решение по умолчанию, встроенное в ASP.NET Core, использует cookieпроверку подлинности на основе.
Маркеры — это контейнеры с метаданными, которые явно передаются через заголовки или текст HTTP-запросов. Основное преимущество маркеров по сравнению с файлами cookie заключается в том, что они не привязаны к конкретному приложению или домену. Вместо этого маркеры обычно подписываются асимметричной криптографией. Например, серверы OIDC выдают маркеры с информацией об identity использовании формата веб-маркера JSON (JWT), который включает подпись. Асимметричная криптография использует сочетание закрытого ключа, известного только подписывательу, и открытый ключ, который может знать каждый. Маркеры также могут быть зашифрованы.
Подписанный маркер нельзя изменить из-за закрытого ключа. Открытый ключ:
- Позволяет проверить маркер, чтобы убедиться, что он не был изменен.
- Гарантирует, что она была создана сущностью, владеющей закрытым ключом.
Основной недостаток использования маркеров заключается в том, что им требуется служба (обычно сервер OIDC) для выдачи и предоставления проверки для маркеров. Служба должна быть установлена, настроена и сохранена.
Распространенная причина, по которой требуется сервер OIDC, заключается в приложениях, предоставляющих веб-API, которые используются другими приложениями. Для предоставляемых веб-ИНТЕРФЕЙСов API, клиентские интерфейсы, такие как одностраничные приложения (SPA), мобильные клиенты и классические клиенты считаются частью одного приложения. Примеры SPA включают Angular, React и Blazor WebAssembly. Если приложения, отличные от веб-приложения или любого пользовательского интерфейса клиента, должны вызвать безопасный вызов API к приложению, скорее всего, вы захотите использовать маркеры. Если у вас есть только пользовательские интерфейсы клиента, ASP.NET Core Identity предоставляет возможность получения маркера во время проверки подлинности. Маркер проверки подлинности, выданный ASP.NET Core Identity:
- Может использоваться мобильными и классическими клиентами. Файлы cookie предпочтительнее для маркеров безопасности и простоты.
- Не подходит для управления доступом из сторонних приложений.
Другая причина, по которой требуется сервер OIDC, заключается в предоставлении общего доступа к входам с другими приложениями. Обычно называется единым входом, эта функция позволяет пользователям:
- Войдите один раз с помощью формы веб-приложения.
- Используйте полученные учетные данные для проверки подлинности с другими приложениями без необходимости повторного входа или выбора другого пароля.
Сервер OIDC обычно предпочтительнее предоставлять безопасное и масштабируемое решение для единого входа.
Для приложений, которые не совместно используют имена входа с другими приложениями, самый простой способ быстро защитить приложение — использовать встроенный поставщик ASP.NET Core Identity . В противном случае требуется сервер OIDC, предоставляемый сторонним identity решением для управления. Серверы OIDC доступны как:
- Продукты, устанавливаемые на сервере, называемые самостоятельным узлом.
- Контейнеры выполняются в узле, например Docker.
- Веб-службы, с которыми вы интегрируетсяе для управления identity.
Некоторые решения являются бесплатными и открытый код, а другие коммерчески лицензированы. Сведения о доступных вариантах см identity . в решениях по управлению. Возможно, ваша организация уже использует identity поставщика. В этом случае может потребоваться использовать существующий поставщик, а не использовать другое решение. Все основные решения предоставляют документацию по настройке ASP.NET Core для использования своего продукта или службы.
Сценарии без подключения к сети
Многие решения, такие как идентификатор Microsoft Entra, основаны на облаке и требуют подключения к Интернету для работы. Если ваша среда не разрешает подключение к Интернету, вы не сможете использовать эту службу.
ASP.NET Core Identity хорошо работает в отключенных сценариях, таких как:
- Приложение не может получить доступ к Интернету.
- Приложение должно по-прежнему работать в локальной сети, даже если Интернет отключен.
Если для отключенного сценария требуется полный сервер OIDC, выберите один из следующих вариантов:
- Решение, позволяющее устанавливать и запускать службу на собственных компьютерах.
- Запустите службу проверки подлинности локально в качестве контейнера.
Определите, где хранятся данные пользователей, такие как входы
Еще одним важным фактором, который следует учитывать, заключается в том, где хранятся данные входа пользователя. Многие разработчики выбирают внешние облачные службы, такие как Идентификатор Microsoft Entra для управления identity. Поставщик облачных служб:
- Отвечает за безопасное хранение данных.
- хранит программное обеспечение в актуальном состоянии с последними исправлениями и выпусками системы безопасности.
- Соответствует нормативным privacy требованиям.
Другие предпочитают хранить данные на своих серверах из-за правил, соответствия, политики или других причин.
Если данные хранятся на серверах, скорее всего, потребуется выбрать устанавливаемое или контейнерное решение.
Identity сервер OIDC
Используйте следующую схему, чтобы решить, следует ли использовать систему ASP.NET Core Identity или сервер OIDC для проверки подлинности и авторизации:
В следующей таблице перечислены некоторые аспекты, которые следует учитывать при выборе identity решения для управления.
Компонент | Самостоятельный узел (инфраструктура или контейнер) | Облачное хранилище |
---|---|---|
Интеграция приложений | Локальные решения, реализованные как библиотеки или платформы, часто могут быть интегрированы непосредственно в собственное приложение. Решения на основе контейнеров требуют передачи между веб-приложением и службой на основе контейнеров. | Облачные решения обычно интегрируются в определенных точках в потоке входа и предоставляют конфигурацию для обновления пользовательского интерфейса в соответствии с темой, но уровень настройки ограничен. |
Конфигурация | Для самостоятельного размещения решений требуется настройка программного обеспечения для среды в дополнение к настройке способа управления удостоверениями. Решения на основе контейнеров обычно предоставляют веб-пользовательский интерфейс для настройки. | Облачные решения обычно предоставляют веб-пользовательский интерфейс для настройки. |
Настройка | Решения для самостоятельного размещения обычно настраиваются с высокой степенью настройки, включая изменения на основе кода. Хотя контейнерные решения обеспечивают возможности расширяемости, они часто являются более ограниченными. | Облачные службы разрешают настройку, но обычно это ограничивается изменениями на основе конфигурации. |
Обслуживание | Установленные продукты требуют выделенного ресурса, чтобы обеспечить своевременное применение всех исправлений безопасности и управление обновлениями. Процесс обновления и исправления для контейнеров обычно меньше трения и включает в себя просто установку предоставленного образа контейнера. | Поставщик услуг поддерживает облачное решение, включая применение необходимых исправлений и обработку обновлений. |
Хранилище учетных данных пользователя | Вы несете ответственность за управление данными и обработку нарушений. | Управление рисками, связанными с обработкой учетных данных пользователей, и соблюдение нормативных требований. делегируется поставщику услуг. |
Дополнительные сведения о доступных вариантах см Identity . в решениях по управлению для ASP.NET Core.
Следующие шаги
- Сведения о веб-токенах JSON
- Просмотрите примеры приложений с проверкой подлинности и авторизацией и identity для ASP.NET Core.
- Следуйте инструкциям, чтобы защитить веб-приложение .NET с помощью встроенного ASP.NET Core Identity.
- Дополнительные сведения о защите веб-API.
ASP.NET Core