Identity server: IdentityServer for Cloud Native Apps
Содержание
Аутентификация ваших пользователей — Identity Blitz
Сервер аутентификации для вашей организации
Дает пользователю возможность использовать одну учетную запись для входа во все веб-сайты и мобильные приложения компании. Входу в приложение предшествует процесс аутентификации — проверка, что пользователь является тем, за кого он себя выдает. Сервер аутентификации Blitz Identity Provider позволяет сгладить этот процесс и повысить безопасность
Узнать большеОнлайн-демоДокументацияСмотреть видео
Зачем менять то, что работает?
Каждая четвертая организация в мире уже внедрила технологию единого входа. Узнайте, в чем преимущества этой технологии
Читать дальше
«Сделай сам» или готовый продукт?
Использовать готовое решение или разработать систему единого входа самим? Рассмотрим все pro et contra
Читать дальше
3 причины выбрать Blitz Identity Provider
В создание Blitz Identity Provider мы вложили лучшие практики безопасности, современные технологии разработки и многолетний опыт создания систем аутентификации
Читать дальше
Добавьте в веб-приложение функции работы с электронной подписью
Пользователь сможет подписать документ прямо на вашем сайте, используя привычный ему браузер и операционную систему, а также практически любое средство электронной подписи, доступное на российском рынке. Вам не нужно беспокоиться о вопросах совместимости и сложностях интеграции
Онлайн-демоУзнать больше
Подключите ваш сайт к Единой системе идентификации и аутентификации (ЕСИА)
ESIA-Bridge решает все задачи по взаимодействию с ЕСИА в целях идентификации и аутентификации пользователей. Подключить сайт к ЕСИА так же просто, как разместить гиперссылку
Для кого актуальна интеграция с ЕСИА?
Узнать большеОнлайн-демо
Уже используют продукты Identity Blitz
Все проекты
Клиенты говорят о нас
R-Style
Благодаря внедрению протокола OpenID Connect 1.0 значительно упростилась процедура подключения информационных систем к ЕСИА. Также была обеспечена возможность использования мобильными приложениями госуслуг защищенных программных интерфейсов, выполняющих операции с идентификационными данными пользователей.
Марина Загрядская
«R-Style»
Рыбаков Фонд
В качестве платформы для UNID RF мы выбрали программный продукт Blitz Identity Provider. Зрелость продукта и простой API позволил уже через неделю со старта проекта предоставить возможность пользователям проходить регистрацию и получать доступ к первым подключенным интернет-сайтам.
Александр Смирнов
Технический директор «Рыбаков Фонд»
Ростелеком
РЕАК СОФТ придут на помощь в любое время дня и ночи, что бы ни случилось с проектом.
Евгений Соловьёв
«Ростелеком»
Минкомсвязь России
Мне нравится работать с РЕАК СОФТ. Специалисты компании нацелены на результат, разбираются в построении систем аутентификации и предлагают отличные решения стоящих перед нами задач.
Эдуард Моссаковский
«Минкомсвязь России»
Все клиенты
Использование ASP.NET Core Identity — документация IdentityServer4 1.0.0
Примечание
Любые предварительные условия (например, шаблоны) сначала ознакомьтесь с обзором.
IdentityServer разработан для гибкости, и отчасти это позволяет вам использовать любую базу данных, которую вы хотите, для ваших пользователей и их данных (включая пароли).
Если вы начинаете с новой пользовательской базы данных, то ASP.NET Core Identity — это один из вариантов, который вы можете выбрать.
В этом кратком руководстве показано, как использовать ASP.NET Core Identity с IdentityServer.
В этом кратком руководстве подход к использованию ASP.NET Core Identity заключается в создании нового проекта для узла IdentityServer.
Этот новый проект заменит предыдущий проект IdentityServer, который мы создали в предыдущих кратких руководствах.
Причина этого нового проекта связана с различиями в ресурсах пользовательского интерфейса при использовании ASP.NET Core Identity (в основном из-за различий в входе и выходе).
Все остальные проекты в этом решении (для клиентов и API) останутся прежними.
Примечание
В этом кратком руководстве предполагается, что вы знакомы с тем, как работает ASP.NET Core Identity. Если нет, рекомендуется сначала узнать об этом.
Новый проект для ASP.NET Core Identity
Первым шагом является добавление в решение нового проекта для ASP. NET Core Identity.
Мы предоставляем шаблон, который содержит минимальные ресурсы пользовательского интерфейса, необходимые для идентификации ASP.NET Core IdentityServer.
В конечном итоге вы удалите старый проект для IdentityServer, но есть некоторые элементы, которые вам нужно будет перенести.
Начните с создания нового проекта IdentityServer, который будет использовать ASP.NET Core Identity:
cd quickstart/src dotnet новый is4aspid -n IdentityServerAspNetIdentity
При появлении запроса на «заполнение» пользовательской базы данных выберите «Y» для «да».
Это заполняет базу данных пользователей нашими пользователями «alice» и «bob».
Их пароли «Pass123$».
Примечание
Шаблон использует Sqlite в качестве базы данных для пользователей, а миграции EF предварительно создаются в шаблоне. Если вы хотите использовать другого поставщика базы данных, вам потребуется изменить поставщика, используемого в коде, и повторно создать миграции EF.
Проверьте новый проект
Откройте новый проект в редакторе по вашему выбору и проверьте сгенерированный код.
Обязательно просмотрите:
IdentityServerAspNetIdentity.csproj
Обратите внимание на ссылку IdentityServer4.AspNetIdentity .
Этот пакет NuGet содержит компоненты интеграции ASP.NET Core Identity для IdentityServer.
Startup.cs
В ConfigureServices обратите внимание на нужный AddDbContext
AddIdentity
выполняются для настройки удостоверения ASP.NET Core.
Также обратите внимание, что большая часть конфигурации IdentityServer, которую вы выполняли в предыдущих кратких руководствах, уже выполнена.
Шаблон использует стиль в памяти для клиентов и ресурсов, и они получены из Config.cs .
Наконец, обратите внимание на добавление нового вызова AddAspNetIdentity
.
Аддаспнетидентити
добавляет уровень интеграции, позволяющий IdentityServer получать доступ к пользовательским данным для пользовательской базы данных ASP. NET Core Identity.
Это необходимо, когда IdentityServer должен добавлять утверждения для пользователей в токены.
Обратите внимание, что AddIdentity
должен быть вызван до AddIdentityServer
.
Config.cs
Config.cs содержит жестко запрограммированные в памяти клиенты и определения ресурсов.
Чтобы сохранить работу тех же клиентов и API, что и в предыдущих кратких руководствах, нам нужно скопировать данные конфигурации из старого проекта IdentityServer в этот.
Сделайте это сейчас, а потом Config.cs должен выглядеть так:
public static class Config { общедоступный статический IEnumerableIdentityResources => новый список { новый IdentityResources.OpenId(), новый IdentityResources.Profile(), }; общедоступный статический IEnumerable ApiScopes => новый список { новый ApiScope("api1", "Мой API") }; общедоступные статические клиенты IEnumerable => новый список<Клиент> { // машина-машина-клиент новый клиент { ClientId = "клиент", ClientSecrets = { новый секрет ("секрет". Sha256()) }, AllowedGrantTypes = GrantTypes.ClientCredentials, // области, к которым клиент имеет доступ Разрешенные области = { "api1" } }, // интерактивный клиент ASP.NET Core MVC новый клиент { идентификатор клиента = "MVC", ClientSecrets = { новый секрет ("секрет". Sha256()) }, AllowedGrantTypes = GrantTypes.Code, // куда перенаправить после авторизации RedirectUris = { "https://localhost:5002/signin-oidc"}, // куда перенаправить после выхода PostLogoutRedirectUris = { "https://localhost:5002/signout-callback-oidc" }, AllowedScopes = новый список<строка> { IdentityServerConstants.StandardScopes.OpenId, IdentityServerConstants.StandardScopes.Profile, "апи1" } } }; }
На данный момент вам больше не нужен старый проект IdentityServer.
Program.cs и SeedData.cs
Program.cs Main
немного отличается от большинства проектов ASP.NET Core.
Обратите внимание, как это выглядит для аргумента командной строки с именем /seed , который используется в качестве флага для заполнения пользователей в базе данных ASP.NET Core Identity.
Посмотрите на код класса SeedData
, чтобы увидеть, как создается база данных и создаются первые пользователи.
AccountController
Последний код для проверки в этом шаблоне — AccountController
.
Он содержит немного другой код входа и выхода, чем предыдущие краткое руководство и шаблоны.
Обратите внимание на использование SignInManager
и UserManager
из ASP.NET Core Identity для проверки учетных данных и управления сеансом проверки подлинности.
Большая часть остального кода такая же, как и в предыдущих кратких руководствах и шаблонах.
Чего не хватает?
Большая часть остального кода в этом шаблоне аналогична другим кратким руководствам и шаблонам, которые мы предоставляем.
Вы заметите, что в этом шаблоне отсутствует код пользовательского интерфейса для регистрации пользователя, сброса пароля и других вещей, которые можно ожидать от шаблона Visual Studio ASP.NET Core Identity.
Учитывая разнообразие требований и различные подходы к использованию ASP.NET Core Identity, наш шаблон намеренно не предоставляет эти функции.
Предполагается, что вы достаточно хорошо знаете, как работает ASP.NET Core Identity, чтобы добавить эти функции в свой проект.
Кроме того, вы можете создать новый проект на основе шаблона удостоверения Visual Studio ASP.NET Core и добавить в этот проект функции IdentityServer, о которых вы узнали из этих кратких руководств.
Общая картина — документация IdentityServer4 1.0.0
Большинство современных приложений выглядят примерно так:
Наиболее распространенные взаимодействия:
- Браузеры взаимодействуют с веб-приложениями
- Веб-приложения взаимодействуют с веб-API (иногда самостоятельно, иногда от имени пользователя)
- Приложения на основе браузера взаимодействуют с веб-API
- Собственные приложения взаимодействуют с веб-API
- Серверные приложения взаимодействуют с веб-API
- Веб-API взаимодействуют с веб-API (иногда самостоятельно, иногда от имени пользователя)
Как правило, каждый уровень (передний, средний и внутренний) должен защищать ресурсы и
внедрить аутентификацию и/или авторизацию — часто в отношении одного и того же пользовательского хранилища.
Передача этих основных функций безопасности службе маркеров безопасности предотвращает дублирование этих функций в этих приложениях и конечных точках.
Реструктуризация приложения для поддержки службы токенов безопасности приводит к следующей архитектуре и протоколам:
Такой дизайн делит вопросы безопасности на две части:
Аутентификация
Аутентификация необходима, когда приложению необходимо знать личность текущего пользователя.
Обычно эти приложения управляют данными от имени этого пользователя и должны убедиться, что этот пользователь может только
получить доступ к данным, для которых он разрешен. Наиболее распространенным примером этого являются (классические) веб-приложения —
но собственные приложения и приложения на основе JS также нуждаются в аутентификации.
Наиболее распространенными протоколами аутентификации являются SAML2p, WS-Federation и OpenID Connect.
самые популярные и самые распространенные.
OpenID Connect является новейшим из трех, но считается будущим, поскольку имеет
наибольший потенциал для современных приложений. Он был создан для сценариев мобильных приложений с самого начала
и разработан, чтобы быть дружественным к API.
Доступ к API
У приложений есть два основных способа взаимодействия с API — использование идентификатора приложения,
или делегирование личности пользователя. Иногда оба метода необходимо комбинировать.
OAuth3 — это протокол, который позволяет приложениям запрашивать токены доступа из службы токенов безопасности и использовать их.
для связи с API. Это делегирование снижает сложность как клиентских приложений, так и API, поскольку
аутентификация и авторизация могут быть централизованы.
OpenID Connect и OAuth 2.0 — лучше вместе
OpenID Connect и OAuth 2.0 очень похожи — на самом деле OpenID Connect является расширением поверх OAuth 2.0.
Две фундаментальные проблемы безопасности, аутентификация и доступ к API, объединены в единый протокол — часто с одним циклом обращения к службе токенов безопасности.
Мы считаем, что сочетание OpenID Connect и OAuth 2. 0 — лучший подход к обеспечению безопасности современных
приложений в обозримом будущем. IdentityServer4 является реализацией этих двух протоколов и
оптимизирован для решения типичных проблем безопасности современных мобильных, нативных и веб-приложений.
Чем может помочь IdentityServer4
IdentityServer — это ПО промежуточного слоя, которое добавляет конечные точки OpenID Connect и OAuth 2.0, соответствующие спецификации, в произвольное приложение ASP.NET Core.
Как правило, вы создаете (или повторно используете) приложение, которое содержит страницу входа и выхода (и, возможно, согласие — в зависимости от ваших потребностей),
а промежуточное ПО IdentityServer добавляет к нему необходимые заголовки протоколов, чтобы клиентские приложения могли взаимодействовать с ним, используя эти стандартные протоколы.
Хостинг-приложение может быть настолько сложным, насколько вы хотите, но мы обычно рекомендуем свести поверхность атаки к минимуму, включив
только пользовательский интерфейс, связанный с аутентификацией.