Nano Hash - криптовалюты, майнинг, программирование

Гибридная аутентификация в ядре .net с Open Id Connect и локальной базой данных

Есть ли шаблон для разработки приложения, которое может аутентифицировать пользователей как с помощью Open Id Connect (подключенного в Azure AD), так и с помощью локальной базы данных?

В приложении, которое я создаю, будут пользователи из компании, у которой есть Azure Active Directory, но также есть пользователи, не работающие в указанной компании, которые должны использовать приложение, поскольку они не зарегистрированы в Azure AD.

Метод проверки подлинности без Azure AD должен использовать локальную базу данных, а не других поставщиков проверки подлинности.


  • В ASP.NET Core этого можно добиться с помощью нескольких схем проверки подлинности. 26.02.2019

Ответы:


1

Вы можете использовать ASP.NET Identity для управления своими локальными пользователями в базе данных и использовать Azure AD в качестве внешнего поставщика удостоверений, который позволяет учетным записям AAD входить в ваше приложение. Вы можете идентифицировать пользователя Azure AD и связать его с пользователем в своей локальной БД, чтобы вы также могли управлять отношениями / ролями как с локальными пользователями, так и с пользователями Azure AD.

Я предоставлю простой пример кода, как реализовать эту функцию:

  1. Создайте новое базовое приложение .net с помощью ASP.NET Identity (Individual User Accounts шаблон).

  2. Установите пакет: Microsoft.AspNetCore.Authentication.AzureAD.UI

  3. Измените Startup.cs, чтобы включить аутентификацию Azure AD:

    services.AddDbContext<ApplicationDbContext>(options =>
        options.UseSqlServer(
            Configuration.GetConnectionString("DefaultConnection")));
    services.AddDefaultIdentity<IdentityUser>()
        .AddEntityFrameworkStores<ApplicationDbContext>();
    
    services.AddAuthentication(sharedOptions =>
    {
    
    }).AddAzureAD(options => Configuration.Bind("AzureAd", options)).AddCookie();
    
  4. Измените appsettings.json, чтобы добавить параметры приложения Azure AD:

    "AzureAd": {
        "Instance": "https://login.microsoftonline.com/",
        "Domain": "xxx.onmicrosoft.com",
        "TenantId": "xxxxxx-xxxxx-4f08-b544-b1eb456f228d",
        "ClientId": "xxxxx-xxxxx-4717-9821-e4f718fbece4",
        "CallbackPath": "/signin-oidc",
        "CookieSchemeName": "Identity.External"
    },
    

    Пользователи могут выбрать логин с локальным пользователем или пользователем AAD во время процесса входа в систему.

26.02.2019

2

Вы можете использовать IdentityServer в качестве «шлюза федерации», который принимает различные методы аутентификации (Azure AD, локальные пользователи, и т. д.) и представляет их как единый унифицированный сервер OpenID Connect. Это упрощает интеграцию новых приложений в вашу среду, поскольку они имеют единое представление о пользователе и единую конечную точку, а «шлюз» может нести исключительную ответственность за согласование методов и протоколов аутентификации.

Подробную информацию о шаблоне см. На этой странице:

http://docs.identityserver.io/en/latest/topics/federation_gateway.html

введите здесь описание изображения

25.02.2019
  • Обратите внимание, что IdentityServer означает, что вы создаете поставщика удостоверений, что представляет собой немалую задачу. 26.02.2019
  • По моему опыту, большая часть работы, связанной с этим, сводится к пользовательскому интерфейсу для управления локальными пользователями, который вам все равно придется где-то делать, если вы собираетесь иметь локальные учетные записи пользователей. Но определенно задача не из легких. 26.02.2019
  • Стоит ли это, вероятно, зависит от среды и от того, требуется ли аутентификация для одного приложения или для нескольких. 26.02.2019
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..