8

我第一次尝试实现启用 SAML 的 SOAP 服务,我对安全令牌服务 (STS) 在 SAML 实现中的作用有一些概念性的问题。

用户 ---> Web 应用程序 ---SOAP/SAML--> 消息应用程序

基本上这个场景是用户使用他的用户名和密码登录到 Web 应用程序,Web 应用程序依次使用外部服务对用户进行身份验证和授权,在成功的身份验证/授权后,Web 应用程序创建一个 Sender Vouches SAML 断言,用户为主题,使用其私钥对断言进行签名,使用 WS-S 将断言封装在一个肥皂信封中,并对消息传递应用程序进行 SOAP 调用。一旦消息传递应用程序收到请求,它会使用 Web 应用程序的公钥验证签名,从 SAML 断言中提取身份验证和属性语句,并基于它们在端点上执行身份验证策略。

正如您在上述场景中看到的那样,没有涉及外部 STS,但是我读过的关于 SAML 的大多数文献都表明绝对需要 STS。我的问题是我在上述情况下做错了什么,因为我看不出我绝对需要 STS 的任何理由。当然,拥有 STS 会很好,但至少在我看来,没有它并不会阻止我为我的用例实施 SAML。

4

2 回答 2

21

不,您不需要 STS 用于 Web 服务中的 SAML 令牌。STS 将一个令牌(其中“令牌”包括用户名+密码之类的内容)交换为另一个令牌,因此它很有用,因为您的 Web 服务使用者可以发送一些输入令牌(通常是用户名+密码或签名+X.509 证书以方便使用案例)到 STS 并取回一个 SAML 断言,一切准备就绪。

现在,如果您有能力创建将被您的 Web 服务提供商接受的 SAML 令牌,那就去做吧!不需要 STS - 线上的实际 SOAP 消息是相同的,无论 STS 是否参与其创建。

几年前,我写了几篇博客文章,详细介绍了其中的一些内容:

Java EE Tools/NetBeans 5.5 Enterprise Pack 中的 Access Manager 7.1 Beta

SAML 保护的 SOAP 消息剖析

Sun Access Manager 7.1 已被OpenAM取代,但原则保持不变。特别是,第二个条目独立于任何实际产品。

于 2009-01-28T07:07:42.487 回答
0

您可以利用任何开源 SAML 工具包。如果您的应用程序是用 Java 编写的,并且您在 JBoss 或 Weblogic 上运行,那么 SAML 支持是内置的。

于 2009-04-18T21:35:31.947 回答