如何在 Pyramid 中使用外部认证系统

How to use external Auth system in Pyramid

上下文

我的应用程序依赖于外部服务进行身份验证,python API 具有 authentiate_request 功能 request 实例作为参数,returns 结果字典:

现在,调用此函数的成本相对较高(下面是 HTTP POST)。

问题

我是 Pyramid 安全模型的新手,我正在努力如何为我的应用程序使用 existing/properly 编写 AuthenticationPolicy,因此它使用我的身份验证服务,并且不调用它的 API 每个 session 多次(在身份验证成功的情况下)?

有两种广泛的方法可以将自定义身份验证与 Pyramid 集成: - 为 Pyramid 编写自己的身份验证策略(我没有这样做) - 编写自己的中间件来处理您的身份验证问题,并在 Pyramid 中使用 RemoteUserAuthenticationPolicy(我已经这样做了)

第二种,你写一些标准的wsgi中间件,在里面整理你的自定义认证业务,然后写到wsgi env。然后 Pyramid 授权将正常工作,Pyramid 身份验证系统从 wsgi env 的 'REMOTE_USER' 设置中获取用户值。

我个人喜欢这种方法,因为它很容易将不同的应用程序包装在您的中间件中,并且非常容易将其关闭或更换。虽然不能真正准确地回答您的问题,但这可能是比您正在尝试的方法更好的方法。