当我开始探索 WIF 时,我对以下几点有疑问:
在 Windows 标识基础 [WIF] 中,查看安全令牌服务 [STS],我想知道联合身份验证令牌保存在哪里?
我认为它在浏览器 cookie 中,如果是这样,任何人都可以给我一个关于它的见解吗?
当我开始探索 WIF 时,我对以下几点有疑问:
在 Windows 标识基础 [WIF] 中,查看安全令牌服务 [STS],我想知道联合身份验证令牌保存在哪里?
我认为它在浏览器 cookie 中,如果是这样,任何人都可以给我一个关于它的见解吗?
我使用'Fiddler' Web 调试器来找到这个问题的答案。以下是发生的情况:假设您的应用程序SecureApp
的名称是,您的 STS 的名称是SecurePortal
.
当您将浏览器指向时发生的第一件事SecureApp
是它会检查您是否已通过身份验证。如果你不是,你会立即被重定向到SecurePortal
一个查询字符串,表明你正在登录SecureApp
。
一旦您使用 登录SecurePortal
,WIF 框架会生成一个其中包含一些“隐藏”的 HTML 字段HttpResponse
,SecurePortal
其中包含指示您成功登录的值。这些值可能会根据SecurePortal
. 除了这些值之外,还编写了一些 Javascript 代码,以使浏览器将这些值发布到SecureApp
. 一旦这些值通过 验证SecureApp
,框架将写入一个HttpResponse
带有 cookie 的文件,表明您已登录。根据我的经验,cookie 的名称以“FedAuth”开头。此时,您现在可以访问SecureApp
.
另外,我想指出,该框架似乎有某种方法可以防止它设置的 cookie 被手动删除。
我建议您使用网络调试器并自己观察此过程以更好地理解。
简短的回答:令牌首先HttpResponse
在 STS 中作为 cookie 提供给您的浏览器,然后在应用程序中作为 cookie 再次提供给您的浏览器。
WIF 还支持令牌的“会话模式”。在这种情况下,令牌保存在服务器中,并且只有一个(小得多的)句柄被传递给浏览器。如果您有带宽考虑,则特别有用。
请参阅 Vittorio 的帖子:WIF 的会话模式
添加了更多参考:
Hervey在上届 PDC 上的会议也涵盖了这一点。