我正在实现一个修改版的Duo Labs的py_webauthn演示,以便向我的网站添加物理身份验证。这个演示是在Flask中构建的,它使用flask-login
库和SQLAlchemy数据库来存储用户数据。在
理想情况下,我希望Flask应用程序充当Nginx验证器,以便登录的用户能够访问服务器上的其他服务。在
我最初试图在Flask中实现反向代理,但我发现的唯一可行的解决方案需要Twisted框架(因为Shellinabox等服务需要不断发出请求),它需要一个完全独立的WSGI应用程序来建立一个不必要的中间人,而这个中间人很难集成。在
我的理想结果是,用户首先访问服务器,然后proxy-pass
到Flask身份验证服务器,然后可以通过Nginx访问其他几个反向代理服务。我仍然对Python反向代理持开放态度,但我发现Nginx最适合我的需求。在
我应该如何整合烧瓶和Nginx?在
(在应用程序副本演示库的文件可用here。Webauthn功能只是建立在flask-login
之上。)
我解决了!可以将内置的Nginx
auth_request
与Flask一起用作身份验证器。简单地说,如果Flask在被Nginx查询时返回一个200
,Nginx将允许访问另一个页面。或者,验证器可以返回一个错误401
,将用户发送到Nginx 401页面(在我的例子中,该页面会将用户重定向到登录页面)。在要复制,请在烧瓶中添加验证器:
然后,在Nginx中,将
^{pr2}$auth_request
指向验证器,并将401重定向到登录页面。在(代码修改自Nginx documentation.)
相关问题 更多 >
编程相关推荐