场景:
服务器上几个管理后台服务的web应用程序,都挂在*.test.localhost域名下,如mysql.test.localhost、redis.test.localhost。但是每个web应用自身可能没有权限认证或权限认证不够安全,所以希望在访问任意一个*.test.localhost地址的应用前,都先进行统一的登录和权限认证。
方法:
使用nginx的auth_request,如下配置。
访问mysql.test.localhost或redis.test.localhost时,根据auth_request的配置,会把请求的相关信息传给/test-auth,由/var/www/test/auth/auth.php通过test.localhost下的cookie的token来判断是否已经进行统一登录,若登录,返回200,没登录,返回401。
若返回401,根据error_page配置,跳转到/test-auth/login,由/var/www/test/auth/login.php呈现登录页面。
登录页面提交登录,成功的话,设置test.localhost下的cookie的token,并显示登录成功页面。
这之后再访问mysql.test.localhost或redis.test.localhost,即进入相应应用。
另外提供auth.test.localhost,进行登录或查看登录状态。
nginx配置如:
server {
listen 80;
server_name *.test.localhost;
return https://$host;
}
server {
listen 443 ssl;
server_name *.test.localhost;
ssl_certificate "/root/ca/*.test.localhost/*.test.localhost.cer"

该博客介绍了一个在多个web应用前实现统一登录和权限认证的场景。通过利用nginx的auth_request模块,将请求转发到特定的验证服务,根据返回的HTTP状态码决定是否允许访问。未登录用户会被重定向到登录页面,登录成功后设置cookie并能正常访问应用。此外,还提到了auth.test.localhost用于登录和查看登录状态。

8608

被折叠的 条评论
为什么被折叠?



