我第一次尝试实现支持 SAML 的 SOAP 服务,并且对 SAML 实现中安全令牌服务 (STS) 的作用有一些概念性问题。
用户 ---> Web 应用程序 ---SOAP/SAML --> 消息传递应用程序
基本上,该场景是用户使用其用户名和密码登录到 Web 应用程序,Web 应用程序依次使用外部服务对用户进行身份验证和授权,成功验证/授权后,Web 应用程序将创建一个 Sender Vouches SAML 断言,其中用户为主题,使用其私钥签署断言,使用 WS-S 将断言打包在 SOAP 信封中,并对消息传递应用程序进行 SOAP 调用。一旦消息传递应用程序收到请求,它就会使用 Web 应用程序的公钥验证签名,从 SAML 断言中提取身份验证和属性语句,并基于它们在端点上强制执行身份验证策略。
正如您在上面的场景中看到的,没有涉及外部 STS,但是我读过的有关 SAML 的大多数文献都表明 STS 是绝对需要的。我的问题是,我对上述情况是否做错了什么,因为我看不出有任何理由为什么我绝对需要 STS。当然,拥有 STS 会很好,但至少在我看来,没有它并不能阻止我为我的用例实现 SAML。
不,您不需要 Web 服务中的 SAML 令牌的 STS。 STS 将一个令牌(其中“令牌”包括用户名+密码之类的内容)交换为另一个令牌,因此它非常有用,因为您的 Web 服务使用者可以发送一些输入令牌(通常是用户名+密码或签名+X.509 证书)以方便使用例)到 STS 并返回 SAML 断言,一切准备就绪。
现在,如果您有能力创建您的 Web 服务提供商接受的 SAML 令牌,那就开始吧!不需要 STS - 无论 STS 是否参与其创建,传输中的实际 SOAP 消息都是相同的。
几年前,我写了几篇博客文章,详细介绍了其中的一些内容:
Java EE 工具/NetBeans 5.5 Enterprise Pack 中的 Access Manager 7.1 Beta http://blog.superpat.com/2006/05/23/access-manager-7-1-beta-in-java-ee-toolsnetbeans-5-5-enterprise-pack/
SAML 保护的 SOAP 消息剖析 http://blog.superpat.com/2006/05/24/anatomy-of-a-saml-secured-soap-message/
Sun Access Manager 7.1 已被取代OpenAM http://forgerock.com/products/open-identity-stack/openam/,但原则保持不变。特别是,第二条目独立于任何实际产品。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)