AUTHENTIK中由于意外导致账号无法登录以及账号丢失管理员权限的解决方案

前言

由于我当前运行在云端的应用各种各样,每个都有自己的认证体系,十分麻烦,所以我使用了AUTHENTIK这个软件,配置了一个统一身份认证系统。但是在使用这个软件中,我干了不止一些蠢事,最常干的就是导致账号无法登录,以及一不小心丢失了自己的管理员权限。这篇文章就是用来介绍下如何善后的。

一切的前提

我这篇文章是面向AUTHENTIK的管理员的,执行我的操作是需要有AUTHENTIK服务器超级管理员账号的,如果您是普通用户,请联系对应的AUTHENTIK实例的管理员。

关于账号无法登录如何处理

在告诉解决方案之前,我要解释下一般这个问题是如何发生的。我上次陷入这种困境,是因为我在修改AUTHENTIK的默认登录流程,然后配置的流程有问题,导致没有一个用户能够登录进系统。当然,如果忘记了管理员密码,并且AUTHENTIK实例无法正常的向外发送重置密码的邮件或者重置用户密码的流程没有正确定义,也会造成账号无法登录的困境。

要处理这个问题,我们先要前往服务器的终端(注意,需要root权限,否则我们无法在后续的步骤中操作docker)

然后前往当初运行authentik容器需要的docker-compose.yml文件所在的文件夹,执行下面的命令重启容器并生成恢复码(注意,执行这个操作会导致短暂的服务中断,请做好准备)

docker compose run --rm server create_recovery_key 10 akadmin

请注意 命令中的akadmin是我想要紧急登录的账号,比如我的账号名是q2019,那么命令如下

docker compose run --rm server create_recovery_key 10 q2019

然后终端会显示图1中的界面

图1 对Authentik执行强行登录某账号命令后的输出

其中图中红色圈出来的部分就是我们需要的,内容如下:

Switching to schema 'public'
Store this link safely, as it will allow anyone to access authentik as q2019715.
/recovery/use-token/43ieeHNdFRhEKncF0ioON0ofLHGTxDx0S9tDgtxAD3cikwTDUL2BaIGKjxo3/

其中的类似 /recovery/use-token/43ieeHNdFRhEKncF0ioON0ofLHGTxDx0S9tDgtxAD3cikwTDUL2BaIGKjxo3/这一串就是我们的恢复秘钥,请将这一串拼接到我们的Authentik的实例地址后面,像这样:

https://auth.q2019.com/recovery/use-token/43ieeHNdFRhEKncF0ioON0ofLHGTxDx0S9tDgtxAD3cikwTDUL2BaIGKjxo3/

然后直接访问,就可以无需使用账号密码以及登录流程,强行登入系统了。登录系统后别忘了赶紧修复实例中的错误,免的下次又发生这种情况

备注:这个恢复链接是一次性的,用了一次后是无法再次使用的,别人再次访问会返回404界面

备注:这个链接请勿泄露给他人,不然可能会被别人冒名登录。

备注:官方文档地址:[1]

账号丢失管理员权限的解决方案

之前我就是一不小心将自己从管理员组里头移除了,导致实例中没有任何一个管理员,没有人能够进入我的这个Authentik实例的管理后台。

解决方案如下:

还是前往服务器的终端(仍然要root权限)

然后前往当初运行authentik容器需要的docker-compose.yml文件所在的文件夹,执行下面的命令重启容器并重新将某一个用户加入到管理员组中:

docker compose run --rm server create_admin_group q2019715

请注意,其中的q2019715就是要成为管理员的用户的用户名(请注意是用户名)

图2 对Authentik执行强行设置某账号位管理员命令后的输出

只要输出如图2中红框中圈出的内容“User 'q2019715' successfully added to the group 'authentik Admins'.”就代表成功了。接下来只需要登录这个账号 就可以重新拿回Authentik的管理员程序了。

备注:官方关于这个文档的地址如下[2]

相关问题

其实还有一种方法,比较麻烦。由于Authentik是用Django来写的,所以可以通过Django管理命令来控制,但是但是,请千万注意,Authentik是使用了自定义的用户模型,不能使用Django的createsuperuser命令来进行操作(会报AttributeError: property ‘is_staff’ of ‘User’ object has no setter),这个方法比较复杂,所以不在这个博客中介绍。

脚注

[1]:关于账号无法登录如何处理的Authentik官方地址:https://docs.goauthentik.io/docs/troubleshooting/login/

[2]:关于账号无法登录如何处理的Authentik官方地址:https://docs.goauthentik.io/docs/troubleshooting/missing_admin_group,但是请注意,在我写这篇文章的时候(2025-7-4),官方文档中的恢复命令是错误的,文档中的命令docker compose run --rm server ak create_admin_group q2019715 是有问题的,需要删除ak这个参数,否则会报Unknown command: 'ak' ,Type 'manage.py help' for usage.

--------------

本文标题为:

AUTHENTIK中由于意外导致账号无法登录以及账号丢失管理员权限的解决方案

本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议,记得载明出处。
内容有问题?想与我交流下?点此哦,欢迎前来交流~
上一篇
下一篇