当我开始探索WIF时,我对以下内容表示怀疑:
在Windows Identification Foundation [WIF]中,查看安全令牌服务[STS],我想知道联合身份验证令牌的保存位置在哪里?
我认为它在浏览器cookie中,如果是这样,有人可以给我一个洞察力吗?
答案 0 :(得分:3)
我使用'Fiddler'Web调试器来找到这个问题的答案。以下是发生的情况:假设您的应用程序名称为SecureApp
,并且您的STS名称为SecurePortal
。
当您将浏览器指向SecureApp
时,首先发生的事情是检查您是否经过身份验证。如果不是,您会立即被重定向到SecurePortal
,并带有一个查询字符串,表明您正在登录SecureApp
。
使用SecurePortal
登录后,WIF框架会从HttpResponse
生成SecurePortal
,其中包含一些“隐藏”的HTML字段,其中包含表明您已成功登录的值。这些值可以基于SecurePortal
的设置进行签名和/或加密。除了这些值之外,还会编写一些Javascript代码,以使浏览器将值发布到SecureApp
。一旦SecureApp
验证了这些值,框架就会编写一个带有cookie的HttpResponse
,表明您已登录。根据我的经验,cookie的名称以“FedAuth”开头。此时,您现在可以访问SecureApp
内的页面。
另外,我想指出的是,该框架似乎有一些方法可以防止手动删除它所设置的cookie。
我建议您使用网络调试程序并自行观察此过程以便更好地理解。
简短回答:该令牌首先作为STS中的HttpResponse
提供给您的浏览器,然后再次作为应用程序中的cookie提供给您的浏览器。
答案 1 :(得分:0)
WIF还支持令牌的“会话模式”。在这种情况下,令牌保留在服务器中,只有一个(小得多)句柄传递给浏览器。如果您考虑带宽,则特别有用。
见维托里奥的帖子:Session mode for WIF
添加了更多参考资料:
赫维的session at last PDC也涵盖了这一点。