将 Authy(双因素)身份验证与 Apache httpd 集成的最简单方法是什么?

将 Authy(双因素)身份验证与 Apache httpd 集成的最简单方法是什么?

编辑:如果该服务 i) 托管/SaaS 且 ii) 能够发送短信,那么类似于 Authy 的东西也可以工作。

  • 大多数示例都提倡使用 RADIUS 进行双因素身份验证,但我已经使用 OpenLDAP 进行集中身份验证,因此不想添加其他本地服务来管理(但我很乐意呼叫 Authy)。
  • 我想要进行双因素身份验证的应用程序本身是一个 Tomcat 应用程序,它有自己的内部基于表单的身份验证,它将作为第二身份验证类型(见下文)。
    • Apache httpd* 用于反向代理应用程序(就像我们对所有 Tomcat 应用程序所做的那样),这样我就可以保护此时的资源(就像我偶尔使用 LDAP 所做的那样)。一旦 httpd 授予访问权限,Tomcat 身份验证将继续进行。
    • 我在他们的开发者网站上没有看到任何 mod_auth_authy 或类似的东西https://www.authy.com/developers——主要是语言库,所以我不确定如何最好地实现这一点。

(*Apache httpd可能将来会被 NGINX 取代,所以理想情况下建议的解决方案将会延续,但请不要拒绝建议仅限 Apache httpd 的解决方案!)

答案1

我仍然不清楚身份验证顺序和要求,但除此之外,使用 apache 应该很容易。我已经使用 cookie 实现了类似的设置。

您需要在同一个域下有 2 个位置(以允许访问相同的 cookie) - 一个受保护,另一个不受保护(用于显示登录页面并在成功登录后创建 cookie)

受保护位置的 httpd 配置如下所示:

<Location /content>
RewriteEngine on
RewriteCond %{REQUEST_URI} ^/
RewriteCond %{HTTP_COOKIE} ^.*2FAToken=([^;]+)
RewriteCond /home/securefolder/sessions/%1 -f
RewriteRule ^.*$ - [P,S=1]
RewriteRule /(.*) https://URL-of-login-page/login?url=%{REQUEST_FILENAME} [L]
</Location>

第二个位置应包含您的登录页面,该页面将处理登录并创建一个名为 2FAToken 且带有随机会话 ID 的 cookie;它还应在 /home/securefolder/sessions/ 下创建一个文本文件,文件名与会话 ID 相同

Apache 将读取 cookie,确保 /home/securefolder/sessions/ 中存在同名文件,并允许访问您的应用程序。

但是,问题是,为什么你不直接用你的应用程序来做这件事呢?

相关内容