我正在运行带有 LDAP 提供程序/前哨的 Authentik 实例。为了测试它,我将带有 sssd 的 Ubuntu 服务器绑定到 LDAP 服务器。一切运行良好(...终于)。
但我很好奇我是否可以向 LDAP 搜索参数添加已知字段?例如fullname
Authentik 提供的字段?
例如:
我可以跑id myusername
回来
uid=2001(john.smith) gid=2001(john.smith) groups=2001(john.smith),16434(grp-foo),35262(grp-bar)
我还可以运行id domain.tld\myusername
或,它们都返回相同的结果。所有这些都是用户名和/或域的变体。但我也可以搜索电子邮件字段,它可以是任何内容,例如。id [email protected]
id [email protected]
我想尝试类似 macOS 的东西,你只需输入你的全名,它仍然会映射到一个有效的帐户。例如:id "John Smith"
。但这样做会产生:
id: ‘John: no such user
id: ‘Smith’: no such user
在sssh.conf
手册页中,我找到了一个设置re_expression
,它允许您添加或更改正则表达式匹配,将上述所有可能性转换为有效的用户和/或域组合。默认情况下,它设置为:
(((?P<domain>[^\\]+)\\(?P<name>.+$))|((?P<name>[^@]+)@(?P<domain>.+$))|(^(?P<name>[^@\\]+)$))
此正则表达式处理domain\name
、name@domain
和name
。 明显缺少电子邮件字段。
如果sssh
可以搜索电子邮件字段,那么它就可以搜索任何字段,对吗?如果是这样,如何在 Ubuntu 中向 sssh 添加搜索字段?
我最初尝试构建一个正则表达式,将名称转换John Smith
为用户名john.smith
,但假设用户名和全名始终是一对一的。因此,完成此任务(尽管不必要)的唯一真正选择是添加 LDAP 搜索字段。