Настройка единого входа SAML (SSO) в децентрализованном приложении ASP.NET Core
Обзор
В этом руководстве подробно описаны шаги по настройке единого входа SAML (SSO) в приложении ASP.NET Core с децентрализованной архитектурой, использующем любой поставщик идентификации (IdP), совместимый с SAML. Бэкенд (ASP.NET Core) обрабатывает аутентификацию SSO, генерирует JWT-токен и безопасно предоставляет его любому фронтенду (React, Angular, Vue и т. д.).
Поддержка платформ: Промежуточное ПО ASP.NET Core SAML поддерживает ASP.NET Core 2.0 и выше. Оно поддерживает все платформы ASP.NET Core, включая Windows, Linux и macOS.
Предварительные условия: загрузка и установка
- Версия .NET 5 и выше
- Версии .NET Core 2.1 и .NET Core 3.1
Если при выполнении вызовов API возникают проблемы с CORS , добавьте указанную ниже службу и политику.
builder.Services.AddCors(options =>
{
options.AddPolicy("<policy-name>",policy =>
{
policy.WithOrigins("<your-origin>",policy)
.AllowAnyHeader()
.AllowAnyMethod()
.AllowCredentials()
});
});
//Add this in the middleware section
app.UseCors("<policy-name>");
Шаги настройки
Пошаговое руководство по использованию SAML SSO в ASP.NET Core с вашим поставщиком идентификации.
1. Перейдите в панель управления плагина .NET SAML.
- После интеграции откройте браузер и перейдите на панель управления коннектором по указанному ниже URL-адресу:
http(s)<your-dotnet-application-base-url>?ssoaction=config
- Если появляется страница регистрации или страница входа в систему, значит, вы успешно добавили промежуточное ПО miniOrange SAML SSO в свое приложение.
- Зарегистрируйтесь или войдите в свою учетную запись, нажав на кнопку. Зарегистрировать филиал кнопка для настройки промежуточного программного обеспечения.
2. Настройте поставщика идентификации.
- Под Плагин Настройки На вкладке выберите своего поставщика идентификации из показанного списка.
Ниже описаны два способа получения метаданных SAML SP для настройки на стороне вашего поставщика идентификации.
A] Использование URL-адреса метаданных SAML или файла метаданных
- В Меню настроек плагина, искать Настройки поставщика услугНиже вы найдете URL-адрес метаданных, а также возможность загрузки метаданных SAML.
- Скопируйте URL-адрес метаданных или загрузите файл метаданных, чтобы настроить его на стороне вашего поставщика идентификации.
- Вы можете ознакомиться с приведенным ниже скриншотом:
B] Загрузка метаданных вручную
- Из издания Настройки поставщика услуг В этом разделе вы можете вручную скопировать метаданные поставщика услуг, например: Идентификатор сущности SP, URL-адрес ACS, URL-адрес единого выхода. и поделитесь им со своим поставщиком идентификационных данных для настройки.
- Вы можете ознакомиться с приведенным ниже скриншотом:
3. Настройте промежуточное ПО ASP.NET Core SAML в качестве поставщика услуг.
Ниже описаны два способа настройки метаданных поставщика идентификации SAML в промежуточном программном обеспечении.
A] Загрузите метаданные, используя кнопку «Загрузить метаданные IDP»:
- Если ваш поставщик идентификационных данных предоставил вам URL-адрес метаданных или файл метаданных (только в формате .xml), то вы можете просто настроить метаданные поставщика идентификационных данных в промежуточном ПО, используя следующий код: Загрузка метаданных IDP опцию.
- Скопируйте URL-адрес метаданных или загрузите файл метаданных, чтобы настроить его на стороне вашего поставщика идентификации.
- Вы можете ознакомиться с приведенным ниже скриншотом:
- Вы можете выбрать любой из вариантов в зависимости от доступного вам формата метаданных.
B] Настройте метаданные поставщика идентификации вручную:
- После настройки вашего Поставщик удостоверений, это предоставит вам Идентификатор сущности IDP, URL-адрес единого входа IDP и Сертификат SAML X509 поля соответственно.
- Нажмите Сохранено чтобы сохранить данные вашего IDP.
4. Тестирование SAML SSO
- Нажмите на Тестовая конфигурация Нажмите кнопку, чтобы проверить правильность выполненной вами настройки SAML.
- На скриншоте ниже показан успешный результат. Нажмите на SSO интеграция для дальнейшего продолжения интеграции SSO.
- Если на стороне промежуточного программного обеспечения возникнет ошибка, вы увидите окно, похожее на приведенное ниже.
- Для устранения ошибки выполните следующие действия:
- Под Устранение неполадок Вкладка, включите переключатель, чтобы получать журналы плагина.
- После включения вы сможете получать журналы плагина, перейдя по адресу... Плагин Настройки вкладку и нажав на Тестовая конфигурация.
- Скачать журнальный файл из Устранение неполадок Нажмите вкладку, чтобы посмотреть, что пошло не так.
- Вы можете поделиться журнальный файл с нами в aspnetsupport@xecurify.com Наша команда свяжется с вами, чтобы решить вашу проблему.
5. Сопоставление атрибутов
- После проверки конфигурации сопоставьте атрибуты вашего приложения с атрибутами поставщика идентификации (IdP).
- Примечание: Все сопоставленные атрибуты будут сохранены в сессии, чтобы вы могли получить к ним доступ в своем приложении.
6. Интеграционный код
- Эти шаги позволяют получить информацию о пользователях SSO в вашем приложении в виде пользовательских утверждений.
- Примечание: В пробной версии промежуточное ПО поддерживает только информацию о пользователе в утверждениях; получение информации о пользователе в сессии и заголовках доступно в платном плагине.
-
Создайте в .NET-приложении конечную точку GET для возврата JWT-токена после входа в систему.
Примечание: Если у вас есть способ создать JWT, вам просто нужно выбрать утверждения из cookie-файла .NET.
Ниже приведён код для вашего означения:
[HttpGet("gettoken")]
public string GetToken()
{
if(User.Identity!=null && User.Identity.IsAuthenticated)
{
var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes
("Your-JWT-secret-key"));
var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha256);
var identity = (ClaimsIdentity)User.Identity;
var claims = identity.Claims;
var token = new JwtSecurityToken(
issuer:"<issuer-name>",
audience:"<audience>",
claims:claims,
expires: DateTime.UtcNow.AddHours(1),
signingCredentials: creds
);
return new JwtSecurityTokenHandler().WriteToken(token);
}
return null;
}
7. Добавить кнопку «Вход».
- Наведите указатель мыши на Выберите действия и нажмите на Скопировать ссылку SSO.
- Используйте следующий URL-адрес в качестве ссылки в приложении, из которого вы хотите выполнить единый вход (SSO):
https://<application-url>?ssoaction=login&appid=<app-id>
- После входа в систему вы будете перенаправлены обратно на свой сайт. фронтенд-приложение тогда вам потребуется сделать вызов API , чтобы получить знак и информация о пользователе.
- Ниже приведён пример кода, который можно использовать для выполнения вызова API. конечная точка токена чтобы получить токен на стороне фронтенда.
fetch("https://<backend-api-baseurl>/api/gettoken", {
method: "GET",
})
.then((response) => {
//here you will receive the jwt token and the user details
console.log(response);
});
8. Интеграция тестов
- Запустите свое приложение ASP.NET Core Web API
- Запустите свое фронтенд-приложение
- В интерфейсе приложения нажмите на SSO Войти добавленная вами кнопка
- После Вход по SAML, Вы будете перенаправлены обратно в ваше фронтенд-приложение. На этом этапе ваше фронтенд-приложение вызывает /api/gettoken Конечная точка, которая возвращает токен и данные пользователя. Вы можете использовать JWT-токен для выполнения дальнейших вызовов API.
Примечание: Если вы используете атрибут Authorize в API для проверки токенов, вам потребуется указать политику аутентификации, поскольку у нас теперь зарегистрировано несколько политик.
Для использования JWT: [Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme)]
Статьи по теме
Контакт
Пожалуйста, свяжитесь с нами по адресу aspnetsupport@xecurify.com , и наша команда поможет вам настроить ASP.NET Core SAML SSO. Мы поможем вам выбрать наиболее подходящее решение/план в соответствии с вашими потребностями.
