Czy istnieje wzór do zaprojektowania aplikacji, która jest zdolny do uwierzytelniania użytkowników z otwartym identyfikatorem ID Connect (połączony z Azure AD) i lokalną bazą danych?

Aplikacja, którą tworzy, będzie miał użytkowników z firmy, która ma Azure Active Directory, ale posiada również użytkowników nie zatrudnionych przez wspomnianą firmę, która musi korzystać z aplikacji, ponieważ nie są one zarejestrowane w Azure AD.

Metoda uwierzytelniania bez reklamy Azure powinna używać lokalnej bazy danych, a nie innych dostawców uwierzytelniania.

1
Gustavo Passos 26 luty 2019, 01:06

2 odpowiedzi

Najlepsza odpowiedź

Możesz użyć tożsamości ASP.NET do zarządzania lokalnymi użytkownikami w bazie danych i używać Azure AD jako zewnętrznego dostawcy tożsamości, który umożliwia relacje AAD do logowania się w aplikacji. Możesz zidentyfikować użytkownika Azure AD i link do użytkownika w lokalnym DB, dzięki czemu można również zarządzać relacjami / rolami zarówno z lokalnymi użytkownikami, jak i użytkownikami AZURE AD.

Dostarczę prostą próbkę kodu, aby wdrożyć tę funkcję:

  1. Utwórz nową aplikację rdzenia .NET z Identity ASP.NET (szablon Individual User Accounts).

  2. Zainstaluj pakiet: Microsoft.aspnetcore.authentication.Azuread.ui

  3. Zmodyfikuj StartUp.cs, aby włączyć uwierzytelnianie AZURE:

    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. Zmodyfikuj aplikacje appsettings.json, aby dodać ustawienia aplikacji 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"
    },
    

    Użytkownicy mogą wybrać login z użytkownikiem użytkownika lub AAD podczas procesu logowania.

1
Nan Yu 26 luty 2019, 08:06

Możesz użyć IdentityServer jako "Federation Gateway", która zajmuje różnorodne metody uwierzytelniania (Azure AD, lokalni użytkownicy, Itd.) I ujawnia je jako pojedynczy, jednolity serwer OpenID CONNECT. Ułatwia to integracja nowych aplikacji do twojego środowiska, ponieważ mają jedno widoku użytkownika i pojedynczego punktu końcowego, a "brama" może jedynie mieć odpowiedzialność za metody i protokoły uwierzytelniania.

Zobacz tę stronę, aby uzyskać szczegółowe informacje na temat wzoru:

http://docs.identityserver.io/pl/latest/topics/fedation_gateway.html.

enter image description here

0
Eric Damtoft 25 luty 2019, 23:17