我正在使用openLDAP服务器对我的夸克应用程序上的用户进行身份验证。一切正常,但我想检索我的用户数据。
我以为它会出现在方法身份中。getAttributes()但这给了我一个空映射。
以下是一个用户示例:
# tesla, example.com
dn: uid=tesla,dc=example,dc=com
objectClass: inetOrgPerson
objectClass: organizationalPerson
objectClass: person
objectClass: top
objectClass: posixAccount
cn: Nikola Tesla
sn: Tesla
uid: tesla
mail: tesla@ldap.forumsys.com
uidNumber: 88888
gidNumber: 99999
homeDirectory: home
这也是我的ldap配置:
quarkus.security.ldap.enabled=true
quarkus.security.ldap.dir-context.url=ldap://ldap.forumsys.com:389/
quarkus.security.ldap.dir-context.principal=cn=read-only-admin,dc=example,dc=com
quarkus.security.ldap.dir-context.password=password
quarkus.security.ldap.identity-mapping.rdn-identifier=uid
quarkus.security.ldap.identity-mapping.search-base-dn=dc=example,dc=com
quarkus.security.ldap.identity-mapping.attribute-mappings."0".from=cn
quarkus.security.ldap.identity-mapping.attribute-mappings."0".to=groups
quarkus.security.ldap.identity-mapping.attribute-mappings."0".filter=(member=uid={0})
quarkus.security.ldap.identity-mapping.attribute-mappings."0".filter-base-dn=dc=example,dc=com
如何获取我的用户邮件和CN?
非常感谢您的帮助,
托马斯
好吧,我找到了一个答案,这个答案很难看,但确实有效。
因为我无法找到如何使用该框架获取数据,所以我尝试使用ldapsearch在命令行中获取数据。因此,我可以通过运行以下命令来检索我的用户数据:
ldapsearch -H ldap://ldap.forumsys.com:389/ -x -D "cn=read-only-admin,dc=example,dc=com" -w password -b "dc=example,dc=com" -LLL "(uid=tesla)"
这给了我:
dn: uid=tesla,dc=example,dc=com
objectClass: inetOrgPerson
objectClass: organizationalPerson
objectClass: person
objectClass: top
objectClass: posixAccount
cn: Nikola Tesla
sn: Tesla
uid: tesla
mail: tesla@ldap.forumsys.com
uidNumber: 88888
gidNumber: 99999
homeDirectory: home
现在,身份验证工作了,我可以从我的SecurityIdentity检索登录名(使用:identity.getPrincipal()。getName()
)我有一个命令,它为我提供了特定用户的数据。我想你说得对。我在java中运行这个命令并手动检索数据。
以下是Java代码:
final String cmd = "ldapsearch -H " + ldapUrl + " -x -D \"" + ldapUser + "\" -w " + ldapPassword + " -b \"" + ldapFilter + "\" -LLL \"(uid=" + login + ")\"";
String[] shellCommand = { "/bin/bash", "-c", cmd };
final Map<String, String> map = new HashMap<>();
Process process = Runtime.getRuntime().exec(shellCommand);
BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
String line;
while ((line = reader.readLine()) != null) {
if(line.contains(": ")) {
final String key = line.split(": ")[0];
final String value = line.split(": ")[1];
map.put(key, value);
}
}
return map;
请注意,我每个键只得到一个值,因为我感兴趣的数据只有一行。
这是我为我的问题找到的答案。我希望有人能找到更干净的东西。
托马斯
我有一个辅助项目网站,人们可以在那里评论东西,现在我需要显示用户的评论和评论者的用户名。问题是,我无法获得登录用户的用户名。 评论示例: 1) 评论人-Shelo 测试评论 2) 评论人-ProGa 测试评论2 现在的问题是,如果我试图获取“当前登录”用户的用户名,当用户登录时,两条评论都会有相同的用户名 上面的代码示例是您当前登录用户的方式。因此,如果我使用这段代码,并尝试通过
接口说明 获取当前登录用户id 如需调用,请访问 开发者文档 来查看详细的接口使用说明 该接口仅开放给已获取SDK的开发者 API地址 POST /api/user/1.0.0/getId 是否需要登录 是 请求字段说明 无 响应字段说明 参数 类型 说明 userId String 登录用户id 响应成功示例 { "code": 200, "data": { "userId":
我目前正在处理一个在客户端初始化了firebase的应用程序。当用户通过 firebase 登录时,我想从 firestore 中获取用户的数据。我目前正在侦听器中执行此操作并成功获取用户。我想知道这是否是获取用户数据的最佳方式。我的代码如下: 我主要担心的是,每次刷新应用程序时都会获取用户的数据。关于此事的任何建议或最佳做法将不胜感激
我有一个Web角前端,API网关受Cognito和Lambda保护,用于其他业务用例。登录和授权工作正常。我正在使用AWS Javascript SDK进行授权。像https://s3.amazonaws.com/solutions-reference/mobile-backend/latest/mobile-app-backend.pdf 在我的lambda中,我需要获得其他用户的信息,如名字、
问题内容: 哪个是最好的方法?php或javascript。有人可以向我提供一些摘要吗?谢谢。 问题答案: 这将使您的时区成为PHP变量。我使用jQuery和PHP编写了一个函数。经过测试,可以正常工作! 在您希望将时区作为变量的PHP页面上,将此代码段放在页面顶部附近: 这将读取我们现在将要创建的会话变量“时间”。 在同一页面的该部分中,首先需要包括jQuery: 同样在本节中,粘贴此jQuer
X1.2新增 sp_get_users($tag,$where) 功能: 获取符合条件的用户列表; 参数: $tag:查询标签,默认:field:*;limit:0,8;order:create_time desc; $where:查询where数组,按照thinkphp where array格式; 返回: 数组,符合条件的用户列表 使用 //获取最新注册的8个新用户 $las