Awx-operator: LDAP 登录每个用户只能使用一次

创建于 2021-08-23  ·  7评论  ·  资料来源: ansible/awx-operator

问题类型
  • 错误报告
概括

配置 LDAP 后,我就可以登录了。 属性和组似乎正确同步,但注销后我无法再使用相同的用户名登录。 awx-task日志中唯一的错误是awx.api.generics Login failed for user

环境
  • AWX 版本:19.3.0
  • 运营商版本:0.12.0
  • Kubernetes 版本:1.20.0-1089
  • AWX 安装方法:OKD 4.7
重现步骤
  • 安装 AWX 并配置 LDAP 身份验证如下。
  • 使用 LDAP 用户登录
  • 登出
  • 重新登录
预期成绩

用户应该能够再次成功登录。

实际结果

用户只能登录一次。

附加信息

修改后的配置如下:

LDAP Server URI
ldap://ldap-server.example.com/
LDAP Bind DN
uid=svc_awx,cn=sysaccounts,cn=etc,dc=example,dc=com
LDAP Bind Password
Encrypted
LDAP User DN Template
uid=%(user)s,cn=users,cn=accounts,dc=example,dc=com
LDAP Group Type
GroupOfNamesType
LDAP Require Group
cn=awx-users,cn=groups,cn=accounts,dc=example,dc=com
LDAP Deny Group
Not configured
LDAP Start TLS
On

LDAP User Search
[
  "cn=users,cn=accounts,dc=example,dc=com",
  "SCOPE_SUBTREE",
  "(uid=%(user)s)"
]

LDAP Group Search
[
  "cn=groups,cn=accounts,dc=example,dc=com",
  "SCOPE_SUBTREE",
  "(objectClass=nestedGroup)"
]

LDAP User Attribute Map
{
  "first_name": "givenName",
  "last_name": "sn",
  "email": "mail"
}

LDAP User Flags By Group
{
  "is_superuser": [
    "cn=awx-admins,cn=groups,cn=accounts,dc=example,dc=com"
  ]
}

使用管理员帐户删除 LDAP 用户似乎允许再次登录。

AWX 操作员日志
bug high support

最有用的评论

@kurokobo应该由 ansible/awx#10965 修复

所有7条评论

我有相同的问题。 此外,LDAP 用户不再像以前的版本那样具有“LDAP”标签。
image

旁注:如果我更改了“admin”用户的密码,则每次重新启动 minikube 时都会重置密码。 这些问题可能是相关的。

同样的问题,我这里有 awx-operator 0.13.0。 我尝试从头开始创建一个 awx 实例而不从任何备份中恢复,但仍然存在相同的问题。 我有另一个运行 AWX 19.2.2 的集群,但没有出现此问题。 这个问题只出现在新用户身上,已经为 LDAP 配置的用户将继续工作。
image
添加并重新登录时在 AD 上找不到的同一用户与已配置 LDAP 时工作的用户相同。

只是确认我可以在以下内容上复制此问题:

环境

  • AWX 版本:19.3.0
  • 运营商版本:0.13.0
  • Kubernetes 版本:v1.21.3+k3s1
  • AWX 安装方法:k3s

我面临同样的问题。

  • 它不再适用于 0.13.0/19.3.0(全新安装/部署); 第一次仍然可以登录 ldap; 下次登录用户名和密码将根据本地数据库进行验证
  • 它确实适用于 0.12.0/19.2.2(全新安装/部署)
  • 升级后的现有用户 0.12.0/19.2.2 -> 0.13.0/19.3.0 仍在工作

API 输出中缺少一个必需的用户属性值(导致 GUI 中缺少 ldap 标签)

  • "ldap_dn": ""

应该是这样的:

  • "ldap_dn": "cn=username,ou=users,dc=internal,dc=org,dc=net"

也丢失了,但对 ldap 的工作不太重要

  • "external_account": "ldap",

我能够通过直接在数据库表 main_profile 中设置 ldap_dn 来修复它(dirty hack)。

minikube kubectl -- exec -ti awx-postgres-0 -- psql -U awx
update main_profile set ldap_dn = 'cn=username,ou=users,dc=internal,dc=org,dc=net' where id = (select id from auth_user where username = 'username');

这似乎是 AWX 方面的一个问题; ansible/awx#10883

@kurokobo应该由 ansible/awx#10965 修复

@tchellomello
感谢您的快速修复!
我期待发布包含修复程序的新版本:rocket:

此页面是否有帮助?
0 / 5 - 0 等级