上下文
我的应用程序依赖外部服务进行身份验证,python API具有函数authentiate_request
request
实例作为参数,并返回结果dict:
如果auth成功,dict包含3个键:
如果不成功:
现在,调用此函数相对较贵(下面是HTTP POST)。
问题
我是Pyramid安全模型的新手,我正在努力如何使用现有/正确编写AuthenticationPolicy
我的应用,因此它使用我的身份验证服务,并且不会调用它&# 39;每个会话的API多次(在auth成功案例中)?
答案 0 :(得分:0)
将自定义身份验证与Pyramid集成有两种方法: - 为Pyramid编写自己的身份验证策略(我还没有这样做) - 编写自己的中间件来处理你的auth问题,并在Pyramid中使用RemoteUserAuthenticationPolicy(我已经这样做了)
对于第二个,你编写一些标准的wsgi中间件,在那里整理你的自定义身份验证业务,然后写入wsgi env。金字塔授权将正常工作,Pyramid auth系统从wsgi env的'REMOTE_USER'设置中获取用户值。
我个人喜欢这种方法,因为很容易将不同的应用程序包装在您的中间件中,并且很容易将其关闭或交换掉。虽然不是你所要求的答案,但这可能是比你正在尝试的更好的方法。