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 9Вызовы 0044 и 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
{
    общедоступный статический IEnumerable IdentityResources =>
        новый список
        {
            новый 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 добавляет к нему необходимые заголовки протоколов, чтобы клиентские приложения могли взаимодействовать с ним, используя эти стандартные протоколы.

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