gpt4 book ai didi

c# - .NET Core 2.1 Linux Keycloak 集成\身份验证(OpenID Connect + SSSD)

转载 作者:太空宇宙 更新时间:2023-11-03 14:45:47 28 4
gpt4 key购买 nike

我现在有点迷茫了,我想在这里实现集中的用户管理,我们有 .NET Core 2.1 Web MVC 应用程序托管在 Linux 上,它使用 Identity.EntityFrameworkCore 来存储用户信息。我们还有用于用户管理的 FreeIPA,它基本上是 LDAP 目录上的 Kerberos 身份验证。

因为它部署在 Linux 上,所以我不能使用 WindowsAuthentication 来使用 Kerberos,而且没有 Windows 兼容包也没有使用 LDAP 的标准方法。剩下的唯一方法是使用第三方库,但不幸的是我对 .NET Core 和 C# 真的很陌生,所以这就是我正在尝试做的事情:

  1. 在 LDAP 中存储用户信息(角色\声明\凭据)以实现集中式用户管理(现在使用数据库表)
  2. 我想实现 SSO,这可以通过 Kerberos 协商身份验证实现,但现在我找不到在 Linux 上使用它的方法。 app-> redirect to Keycloak -> Kerberos->OpenID Connect -> app 也有可能,但我很高兴找到 Kerberos 的解决方案

好吧,我发现了一堆第三方库,比如 this , this和一大堆THIS ,它们看起来都很有前途,但我没有找到任何具有足够文档或示例的文档或示例来与 .NET Core Identity 一起使用。

正如我所说,我是 C# 和 .NET 的新手,不幸的是,我不知道这个库中哪个更好,或者是否有任何直接的方法可以使用它们来存储并对用户进行身份验证。

P.S 我知道这个问题很愚蠢,但出于学习目的我不得不提出一个问题。如有任何帮助,我们将不胜感激!

最佳答案

好吧,看起来我基本上找到了答案,但它还是有一些警告。我将 Keycloak OpenID Connect 设置与 SSSD 联合一起使用,因为无论如何 LDAP 对我的目标来说都是错误的方法。有关该设置的更多信息,您可以阅读 here ,我在那里遇到了一些愚蠢的时刻,其中大部分被预测并绕过this指南,但这更像是一个 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。

关于c# - .NET Core 2.1 Linux Keycloak 集成\身份验证(OpenID Connect + SSSD),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54281210/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com