Интеграция .NET Core 2.1 Linux Keycloak \ аутентификация (OpenID Connect + SSSD) - PullRequest
0 голосов
/ 21 января 2019

Я сейчас немного потерян, я хочу внедрить здесь централизованное управление пользователями, и у нас есть приложение .NET Core 2.1 Web MVC, размещенное в Linux, которое использует Identity.EntityFrameworkCore для хранения информации пользователей.Также у нас есть FreeIPA для управления пользователями, который в основном является аутентификацией Kerberos в каталоге LDAP.

Поскольку он развернут в Linux, я не могу использовать WindowsAuthentication для использования Kerberos, а также нет стандартного способа использования LDAP без пакета обеспечения совместимости Windows.Единственный оставшийся способ - использовать стороннюю библиотеку, но, к сожалению, я действительно новичок в .NET Core и C #, поэтому вот что я пытаюсь сделать:

  1. Хранить информацию о пользователях(Роли \ заявки \ учетные данные) внутри LDAP для реализации централизованного управления пользователями (теперь с использованием таблиц базы данных)
  2. Я хочу реализовать единый вход, это возможно с помощью аутентификации Kerberos Negotiate, но теперь я не могу найти способиспользуйте это на Linux.Также это возможно с помощью app-> redirect to Keycloak -> Kerberos-> OpenID Connect -> app, но я был бы рад найти решение с Kerberos

Ну, я нашел кучу стороннихтакие библиотеки, как , это , , это и целый набор THIS , и все они выглядят многообещающими, но я не нашел ни одной с достаточным количеством документации или примеров для использованияс .NET Core Identity.

Как я уже сказал, я полностью новичок в C # и .NET в целом, и, к сожалению, у меня нет представления о том, какая из этой библиотеки лучше или есть ли какой-либо простой способ использованияих хранить и аутентифицировать пользователей.

PS Я знаю, что этот вопрос тупой, но для целей обучения мне пришлось его создать.Любая помощь с этим будет оценена!

1 Ответ

0 голосов
/ 29 января 2019

Ну, похоже, я в основном нашел ответ, но в любом случае у него есть некоторые оговорки.Я использовал настройку Keycloak OpenID Connect с федерацией SSSD, потому что LDAP в любом случае является неправильным подходом для моих целей.Подробнее об этой настройке вы можете прочитать здесь , там я столкнулся с некоторыми глупостями, большинство из которых предсказаны и обойдены в этом руководстве, но это скорее поток FreeIPA + Keycloak.Последняя вещь о Keycloak, которую следует отметить: мне пришлось добавить и разрешить HBAC-сервису «keycloak», чтобы он заработал, потому что в противном случае моя аутентификация SSSD была отклонена.Переходя к части .NET Core: мое приложение 2.1, и мои настройки выглядят так:

Я добавил следующее в зависимости Startup.cs:

using Microsoft.AspNetCore.Authentication;
using Microsoft.AspNetCore.Authentication.Cookies;
using Microsoft.AspNetCore.Authentication.JwtBearer;
using Microsoft.AspNetCore.Authentication.OpenIdConnect;
using System.IdentityModel.Tokens;

Далее я добавилКонфигурация в appsettings.json

"Oidc": {
"ClientId": "<your client id here>",
"ClientSecret": "<your secret here>",
"Authority": "https://<ip:port of keycloak https>/auth/realms/<realm name>",
"ResponseType": "code"
}

Хорошо, перейдем к самой конфигурации:

services.AddAuthentication(options => {
            options.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;
            options.DefaultChallengeScheme = OpenIdConnectDefaults.AuthenticationScheme;
        })
            .AddCookie("Cookies")
            .AddOpenIdConnect(options =>
            {
                options.ClientId = Configuration["Oidc:ClientId"];
                options.ClientSecret = Configuration["Oidc:ClientSecret"];
                options.Authority = Configuration["Oidc:Authority"];
                options.SaveTokens = true;
                options.GetClaimsFromUserInfoEndpoint = true;
                options.ResponseType = Configuration["Oidc:ResponseType"];
                options.Scope.Add("claims");
                options.ClaimActions.Clear();
                options.ClaimActions.MapUniqueJsonKey("roles", "roles");
            }
        );;

Надеюсь, этот краткий ответ поможет кому-то настроить FreeIPA + Keycloak и подключить его к.NET Core, потому что я убил неделю за это: D.

...