如何在 Pyramid 中使用外部认证系统
How to use external Auth system in Pyramid
上下文
我的应用程序依赖于外部服务进行身份验证,python API 具有 authentiate_request
功能
request
实例作为参数,returns 结果字典:
如果验证成功,dict 包含 3 个键:
- 成功:真
- 用户名:爱丽丝
- cookies:[需要记住用户的 set-cookie headers 列表]
如果不成功:
- 成功:假
- 重定向:url 将用户重定向到何处以进行基于 Web 的身份验证
现在,调用此函数的成本相对较高(下面是 HTTP POST)。
问题
我是 Pyramid 安全模型的新手,我正在努力如何为我的应用程序使用 existing/properly 编写 AuthenticationPolicy
,因此它使用我的身份验证服务,并且不调用它的 API 每个 session 多次(在身份验证成功的情况下)?
有两种广泛的方法可以将自定义身份验证与 Pyramid 集成:
- 为 Pyramid 编写自己的身份验证策略(我没有这样做)
- 编写自己的中间件来处理您的身份验证问题,并在 Pyramid 中使用 RemoteUserAuthenticationPolicy(我已经这样做了)
第二种,你写一些标准的wsgi中间件,在里面整理你的自定义认证业务,然后写到wsgi env。然后 Pyramid 授权将正常工作,Pyramid 身份验证系统从 wsgi env 的 'REMOTE_USER' 设置中获取用户值。
我个人喜欢这种方法,因为它很容易将不同的应用程序包装在您的中间件中,并且非常容易将其关闭或更换。虽然不能真正准确地回答您的问题,但这可能是比您正在尝试的方法更好的方法。
上下文
我的应用程序依赖于外部服务进行身份验证,python API 具有 authentiate_request
功能
request
实例作为参数,returns 结果字典:
如果验证成功,dict 包含 3 个键:
- 成功:真
- 用户名:爱丽丝
- cookies:[需要记住用户的 set-cookie headers 列表]
如果不成功:
- 成功:假
- 重定向:url 将用户重定向到何处以进行基于 Web 的身份验证
现在,调用此函数的成本相对较高(下面是 HTTP POST)。
问题
我是 Pyramid 安全模型的新手,我正在努力如何为我的应用程序使用 existing/properly 编写 AuthenticationPolicy
,因此它使用我的身份验证服务,并且不调用它的 API 每个 session 多次(在身份验证成功的情况下)?
有两种广泛的方法可以将自定义身份验证与 Pyramid 集成: - 为 Pyramid 编写自己的身份验证策略(我没有这样做) - 编写自己的中间件来处理您的身份验证问题,并在 Pyramid 中使用 RemoteUserAuthenticationPolicy(我已经这样做了)
第二种,你写一些标准的wsgi中间件,在里面整理你的自定义认证业务,然后写到wsgi env。然后 Pyramid 授权将正常工作,Pyramid 身份验证系统从 wsgi env 的 'REMOTE_USER' 设置中获取用户值。
我个人喜欢这种方法,因为它很容易将不同的应用程序包装在您的中间件中,并且非常容易将其关闭或更换。虽然不能真正准确地回答您的问题,但这可能是比您正在尝试的方法更好的方法。