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

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

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

В методе аутентификации без Azure AD следует использовать локальную базу данных,не другие провайдеры аутентификации.

Ответы [ 2 ]

0 голосов
/ 26 февраля 2019

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

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

  1. Создание нового базового приложения .net с удостоверением ASP.NET (шаблон 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 в процессе входа в систему.

0 голосов
/ 26 февраля 2019

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

См. Эту страницу длядетали по шаблону:

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

enter image description here

...