如何使用Nginx和Microsoft Azure AD进行身份验证?

时间:2018-08-09 14:22:41

标签: azure nginx

我需要有一种简便的方法,以允许特定用户从AAD到Nginx的上游应用程序进行身份验证。 我找到了一些信息:

编辑: 也许这是nginx https://github.com/TeslaGov/ngx-http-auth-jwt-module

的第三方jwt foss模块

EDIT2: 用于openresty的lua-resty-openidc看起来很棒,甚至可以维护。 仅缺少Azure示例。

EDIT3: 我想知道是否可以使用

AAD->密钥库->密钥库代理-> Nginx(对密钥库代理的auth_request请求)

是否有坚如磐石的替代品? 谢谢

1 个答案:

答案 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根据响应代码允许或拒绝客户端请求。