应用程序后台 安全性:应用程序都托管在私有外联网(和/或本地内联网 - 取决于安装实例)上。因此,虽然安全性很重要,但它并不像它是 Intranet 上的应用程序那么重要。然而,重要的是系统不能轻易被黑客入侵或劫持。
应用程序:该应用程序分为两部分:-
- 类库 (dll)
- 身份验证前端 ASP.NET 应用程序
该 dll 是前端身份验证应用程序的一部分,将添加到其他需要用户身份验证的应用程序(“消费者应用程序”)中。
身份验证应用程序是所有用户、他们有权访问的应用程序以及基于其用户名的权限级别的中央存储。
对于安装了 dll 的消费者应用程序,当最终用户点击要求他们登录的页面时,消费者应用程序会将它们与 appid 一起触发到身份验证应用程序 login.aspx 页面,用户登录,如果他们拥有所需的权限,然后是身份验证应用程序,将它们发送回消费者应用程序(通过带有加密数据的表单) - 其中包括有关用户是谁、用户名、实名、工作角色、组织等的基本数据......而且重要的是消费者应用程序的权限级别列表。
消费者应用程序然后获取该数据,并对其进行处理、解密等。并创建一个表单身份验证 cookie 并填充一个用户类和用户角色类 - 这一切都在 dll 本身内完成。
问题
现在这一切都很好,最初所有数据都存储在身份验证 cookie 中,在 cookie 的 userdata 部分中,但是这里是问题......
一个消费者应用程序(我们已经在内部编写了一个中央应用程序,可以拥有与单个用户(主要是应用程序管理员)相关联的大量权限(用户角色),因此我们需要可以保存大量数据的东西,超过身份验证 cookie 可以容纳的 4KB。
因此,我尝试将其放入会话变量中,最初是一个单个变量,其中所有发送的解密数据都放入一个名为“userdata”的会话变量中。然后我检查何时提出请求。
然而...
我遇到的第一个问题是身份验证 cookie 的寿命似乎比会话长,我想我已经通过将会话延长到 35 分钟(比 AuthCookie 长 5 分钟)解决了这个问题。
但是,当消费者应用程序程序员更改他们的代码(通过 Visual Studio 2010 在调试中运行 localhost)并刷新浏览器时,AuthCookie 仍然存在,但 Session 消失了。现在最初我使用的是默认的 InProc 会话模式,我猜这可能是问题所在。
我的假设正确吗?有没有办法以编程方式同步会话和 AuthCookie?
关于解决此问题的任何其他建议?