当前位置:  开发笔记 > 数据库 > 正文

Web场上的DotNetOpenAuth

如何解决《Web场上的DotNetOpenAuth》经验,为你挑选了1个好方法。

我正在为OpenId提供商和依赖方实施DotNetOpenAuth.在这两种情况下,服务器都位于负载均衡器之后,因此对于任何HTTP请求,我们都不能假设我们将访问同一台服务器.

似乎DotNetOpenAuth 依赖于Session来存储待处理的请求密钥.由于服务器可能在请求之间发生变化,因此我们无法依赖标准的InProc会话.不幸的是,我们无法成功实现SQL作为Session的存储.

我的问题是:将PendingAuthenticationRequest存储为客户端cookie是否安全?还是比使用Session差吗?



1> Andrew Arnot..:

ProviderEndpoint.PendingAuthenticationRequest物业仅供您方便,主要用于简单的场景.如果它不适合你,请务必以另一种方式存储并完全忽略此属性.那里没有伤害.

最终,会话由HTTP cookie跟踪,因此如果您愿意,可以将auth请求状态完全存储在cookie中,以便它可以在Web场环境中运行.另一种方法是不要求客户端(或服务器)通过直接在OP端点URL处理所有内容(包括身份验证),或者使用包含所有内容的查询字符串从OP端点URL重定向用户来跟踪状态您需要跟踪的州信息.请注意后一种方法,因为您将向用户公开您的状态数据以查看并可能篡改.

简而言之,您可能会也可能不会选择在SQL存储中存储用户会话.那应该没问题.我认为你遇到的问题(我们通过电子邮件讨论过)是你需要实现自己的问题IProviderApplicationStore,它会将nonce和association存储在所有web服务器共享的数据库中.这是必要的,并且与用户会话状态正交,因为它存储在应用程序级别.

推荐阅读
谢谢巷议
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有