我需要有一种简便的方法,以允许特定用户从AAD到Nginx的上游应用程序进行身份验证。 我找到了一些信息:
AAD不支持LDAP->仍然过大。所以ldap对我来说是最后的解决方法
Oauth2_proxy可以正常工作,仅适用于特定的用户列表 必须在文件中进行编辑(就地)。有开放的PR用于组访问支持 https://github.com/bitly/oauth2_proxy/pull/347,但似乎 现在不支持oauth2_proxy。 ->很好,因为我可以在AAD中管理用户访问。
这里有教程如何在nginx中设置JWT令牌 https://www.nginx.com/blog/conditional-access-control-with-microsoft-azure-active-directory/ ->但仅在nginx的付费版本中
openresty有很多lua脚本 https://github.com/SkyLothar/lua-resty-jwt,但他们嗯, 在大多数情况下都无法维护。
编辑: 也许这是nginx https://github.com/TeslaGov/ngx-http-auth-jwt-module
的第三方jwt foss模块EDIT2: 用于openresty的lua-resty-openidc看起来很棒,甚至可以维护。 仅缺少Azure示例。
EDIT3: 我想知道是否可以使用
AAD->密钥库->密钥库代理-> Nginx(对密钥库代理的auth_request请求)
?
是否有坚如磐石的替代品? 谢谢
答案 0 :(得分:1)
我对AAD并不熟悉,但是如果您已经在环境中授权了客户端,那么Nginx auth request module是将上游服务的身份验证委派给现有授权服务器的非常简单的方法。
Nginx中的示例指令:
location /upstream/ {
auth_request /auth;
...
}
location = /auth {
proxy_pass http://your-auth-server:1234;
proxy_pass_request_body off;
proxy_set_header Content-Length "";
proxy_set_header X-Real-Ip $remote_addr;
proxy_set_header X-Authorization $http_authorization;
}
对于/ upstream /的每个客户端请求,Nginx都会向/ auth发出内部子请求,您将把它代理到auth服务器,并传递授权客户端请求所需的任何信息。在此示例中,客户端ip及其授权标头。
您的身份验证服务器执行此操作,然后如果要允许访问,则以http代码200响应,否则为401/403。然后Nginx根据响应代码允许或拒绝客户端请求。