我们正在编写类似于的Web应用程序 Azure-Samples/active-directory-dotnet-webapp-webapi-openidconnect
示例包含NaiveSessionCache.cs,它将访问令牌存储在UserObjectId的ASP.NET Session状态中。 代码看起来很合理,但我对名称" Naive"。
有疑虑我有什么理由不在生产中使用它吗?
Vittorio Bertocci的文章The New Token Cache in ADAL v2描述 FileCache(用于桌面应用程序) 和数据库EFADALTokenCache替代实现TokenCache。 但是,如果我可以使用会话,我觉得使用SQL DB太重了。
任何人都可以使用会话吗?
答案 0 :(得分:3)
如果您的方案允许使用会话本身没有反制指示(例如,当没有用户主动登录时您不需要访问)并且您正确使用会话保护它。但是,这些示例中的类仅用于演示通用高速缓存组件的功能,并且尚未在生产中加强使用:您需要添加适当的错误处理,检测和所有软件通常适用于您自己的制作软件的高质量功能。
答案 1 :(得分:0)
根据我的经验,使用会话过多地依赖于Web服务器和应用程序域。我遇到了会话重置/消失的问题。谷歌,你会发现许多人有类似的问题。我们为小型单服务器Web应用程序选择了内存中的令牌缓存。对于更大的一个,特别是如果我们需要一个多服务器应用程序,我肯定会进行数据库实现。