不同的 SAML 令牌验证调用具体有啥作用?

Posted

技术标签:

【中文标题】不同的 SAML 令牌验证调用具体有啥作用?【英文标题】:What do different SAML token validation calls specifically do?不同的 SAML 令牌验证调用具体有什么作用? 【发布时间】:2011-08-17 08:10:35 【问题描述】:

我正在尝试验证由我们基于 WIF 的自定义 STS 在 REST Web 服务中创建的 SAML 令牌。

有几个函数可以进行验证。一个是 SecurityTokenHandlerCollection.ValidateToken(),另一个是 SamlSecurityTokenAuthenticator.ValidateToken()

不幸的是,这些类和函数的在线 Microsoft MSDN 帮助毫无价值,根本没有描述这些函数的作用。

这些函数在验证什么?它们是如何验证的?它们之间有什么区别?他们是否会自动在 Windows 证书存储中查找证书以检查令牌的签名,并验证加密的凭据对象?因为我没有在任何地方传递证书名称。还是我需要自己进行其他手动操作来验证令牌?

我意识到一个返回 ClaimsIdentityCollection 而另一个返回 IAuthorizationPolicy 对象的集合。但这是唯一的区别吗?我说不清楚。

我可以在网上找到大量关于 STS 和声明甚至验证声明的信息,我正在成功地进行这些操作,但我几乎找不到任何关于验证令牌本身以确保它是我创建的信息的信息。

【问题讨论】:

【参考方案1】:

在大多数情况下,您无需担心令牌验证详细信息。所有这一切都由 WIF 为您处理。

但如果你真的想知道,最好的信息来源是维托里奥的书:http://www.amazon.com/Programming-Windows%C2%AE-Identity-Foundation-Dev/dp/0735627185

这里有一些细节:http://msdn.microsoft.com/en-us/library/ff359114.aspx

另一种学习的好方法是查看为处理非 SAML 令牌(例如 SWT)而构建的扩展。下载示例 here 并查找 REST 服务。

【讨论】:

我有 Vittorio 的书,但找不到有关验证令牌、ValidateToken() 正在做什么的具体信息,也根本看不到对 SamlSecurityTokenAuthenticator 的引用。第 93 页上有一些模糊的信息。 在您提供的另一个链接中说我必须通过检查其指纹或序列号来确保用于创建令牌的证书是我信任的证书。我已经阅读了很多关于这个主题的文章,只有一个地方我见过可能给出这个例子或描述的地方。 (我不习惯输入接受这些 cmets。抱歉。)这是链接:leastprivilege.com/… 你是说 SecurityTokenHandlerCollection.ValidateToken() 根据 SAML 令牌中的信息自动在 Windows 证书存储中查找令牌,并验证签名和凭据? 酷!谢谢!我第一次听说。我也刚刚再次搜索了 Vittorio 的书,在第 190 页的 Azure 部分下有一个关于您刚才说的内容的描述,由于我没有进行任何 Azure 开发,因此我跳过了。

以上是关于不同的 SAML 令牌验证调用具体有啥作用?的主要内容,如果未能解决你的问题,请参考以下文章

从经过 SAML 验证的 UI 验证 AJAX API 调用

具有混合身份验证 JWT 和 SAML 的 ASP.NET Web API 2.2 OWIN

为已通过身份验证的用户向 SP 发起 SAML 2.0 发布

Spring boot SAML 2 身份验证对象 null

用于用户身份验证的个人访问令牌和 json Web 令牌有啥区别?

节点:通过页面重定向向客户端发送 JSON Web 令牌