Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django Nginx水疗中心;Sphinx Doco认证_Django_Nginx_Azure Active Directory_Single Page Application - Fatal编程技术网

Django Nginx水疗中心;Sphinx Doco认证

Django Nginx水疗中心;Sphinx Doco认证,django,nginx,azure-active-directory,single-page-application,Django,Nginx,Azure Active Directory,Single Page Application,我有一个SPA应用程序,它使用Azure AD进行身份验证。它工作得很好,现在我使用Sphinx添加了一些用户文档 我已经配置了Nginx,因此可以通过/app/doco使用doco。这工作得很好,但是现在我还想保护它,这样只有经过Azure AD认证的用户才能访问doco。为此,我使用了auth_request()模块。如果我使用的是标准Django身份验证,但当我使用Azure AD身份验证时,它不起作用,因为请求中没有包含用户令牌等 我理解auth_request模块工作的方式是: 用户尝

我有一个SPA应用程序,它使用Azure AD进行身份验证。它工作得很好,现在我使用Sphinx添加了一些用户文档

我已经配置了Nginx,因此可以通过
/app/doco
使用doco。这工作得很好,但是现在我还想保护它,这样只有经过Azure AD认证的用户才能访问doco。为此,我使用了
auth_request
()模块。如果我使用的是标准Django身份验证,但当我使用Azure AD身份验证时,它不起作用,因为请求中没有包含用户令牌等

我理解
auth_request
模块工作的方式是:

  • 用户尝试访问
    /app/doco
    (包括用户令牌)
  • Nginx配置为通过转到
    /app/auth_check
    (自定义Django视图)检查用户是否已通过身份验证,该视图返回200或404
  • 如果为200,则用户可以访问/app/doco

  • 感觉上面的方法是有缺陷的,试图通过一个圆孔击中一个方形的钉子?类似于上述的东西会起作用吗?或者有其他更适合的工具/方法吗?

    从Azure方面来说,我不能说这一点,因为我们没有关于这一点的正式文档,但根据我在Nginx上看到的情况,您应该能够使用JWTs和条件访问来实现这一点

    看起来您可能需要将JWT验证添加到NGINX配置中:

    auth_jwt "Closed site";
    auth_jwt_key_file /etc/nginx/azure.jwk;
    


    你已经看过了吗

    从Azure的角度来看,我真的无法谈论这一点,因为我们没有关于这一点的正式文档,但根据我在Nginx上看到的情况,您应该能够使用JWTs和条件访问来实现这一点

    看起来您可能需要将JWT验证添加到NGINX配置中:

    auth_jwt "Closed site";
    auth_jwt_key_file /etc/nginx/azure.jwk;
    


    你已经看过了吗

    是的,我已经看到Nginx Plus包含了这个功能,但不幸的是,这不是我的选择。除了成本之外,这绝对是我认为最简单的方法。是的,我已经看到Nginx Plus包含了这个功能,但不幸的是,这不是一个选项(对我来说)。除了成本之外,这绝对是我认为最简单的方法。