gpt4 book ai didi

asp.net-core - IdentityServer4 带有 LDAP/AD 身份验证,没有 UI

转载 作者:行者123 更新时间:2023-12-04 15:54:53 25 4
gpt4 key购买 nike

我目前正在开发一个项目,在该项目中我尝试设置基于 IdentityServer4 ( https://github.com/IdentityServer/IdentityServer4 ) 的服务,该服务通过 LDAP 查询本地 Active Directory 来对用户进行身份验证。

为了实现这一点,我还在我的项目中包含了 IdentityServer4.LdapExtension ( https://github.com/Nordes/IdentityServer4.LdapExtension )。存储库中的工作示例工作正常 ( https://github.com/Nordes/IdentityServer4.LdapExtension/tree/master/Sample/IdentityServer ) - 但自定义逻辑是 UI 的一部分,我需要我的服务在没有任何 UI 的情况下运行。

简单地添加

.AddLdapUsers<ActiveDirectoryAppUser>(Conf.GetSection("ldap"), UserStore.InMemory) 

如文档中所述,不会更改请求管道,因为提供的登录/验证方法永远不会执行 - 它们仅通过来自 UI (AccountController) 的调用触发。但是,正如我所说,我不想在此服务中集成任何 UI,而是使用 Token-Endpoint 已经提供的接口(interface)(带有 client_id 和 client_secret 的 POST 请求,使用 JWT 响应)。

有没有一种方法可以集成 LDAP 身份验证,而无需根据需要重写开箱即用的大部分内容?

最佳答案

从您的问题来看,您似乎已经有了 usernamepassword .备注 client_id != usernameclient_secret != password . client_id是客户端应用程序的标识。

您尝试使用的授权类型称为 Resource Owner Password当使用授权端点或 password使用 token 端点时。
此授权类型用于支持遗留系统,不建议用于新开发。

您要执行以验证用户的代码在 LdapUserResourceOwnerPasswordValidator.cs 中如果您将正确的参数传递给 token 端点,则应该执行它:

POST /connect/token

client_id=yourclientid&
client_secret=yourclientsecret&
grant_type=password&
username=yourusername&password=yourusernamespassword


请参阅 token 端点文档: https://identityserver4.readthedocs.io/en/release/endpoints/token.html

您可以使用 Identity Model帮助您发出 token 请求:
var response = await client.RequestPasswordTokenAsync(new PasswordTokenRequest
{
Address = "https://demo.identityserver.io/connect/token",

ClientId = "yourclientid",
ClientSecret = "yourclientsecret",
UserName = "yourusername",
Password = "yourusernamespassword"
});

这在此处记录 https://identitymodel.readthedocs.io/en/latest/client/token.html

关于asp.net-core - IdentityServer4 带有 LDAP/AD 身份验证,没有 UI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52223515/

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