有几种不同的Web服务 - 使用的各种技术,如Java,.NET,Python,Perl,以及未来可能更多 - 属于不同的组织,并且必须限制对这些Web服务的访问
这个想法是拥有一个中央身份验证和授权服务器,只负责授予对每个WS的访问权限。
我正在寻找一个单点登录系统,其中用户使用auth服务器进行一次身份验证,并被授予在有限时间内访问Web服务的权限。
安全性要求很高,因此设置用户名/密码是不够的。
在快速搜索中,我发现了许多不同的解决方案和解决问题的方法,但我不知道这个案例中最好的解决方案和方法 - 技术独立,安全可靠的解决方案。
答案 0 :(得分:2)
我们对这个问题进行了大量研究,但也找不到合适的解决方案。 (一个近乎很好的解决方案,但对于网络服务而言并非如此http://www.atlassian.com/software/crowd/)
因此,我们为我们的WS应用程序(也是第三方应用程序)开发了一个sso和中央用户管理系统,但它不是为了销售。
如果您测试解决方案,则应检查系统的性能,特别是在负载下。一开始我们的系统慢了30倍。通常,您会发现xml解析中的速度减慢以及您必须执行的请求数量(通常在将来您有一个请求的情况下,您将至少有4个)。 (我们使用jmeter来测试它。)并且您应该设置故障转移系统,因为您将使用sso创建单点故障。
答案 1 :(得分:2)
WS-Trust已经在很大程度上解决了这个问题,至少对于基于SOAP的Web服务而言。 WS-Trust是一个定义良好的协议,用于验证和交换“身份验证令牌”,并且可以在跨企业场景中使用,例如在其上构建的WS-Federation等协议。
一个示例场景是让客户端从WS-Trust服务器请求令牌,然后将该SOAP令包中的令牌包含在Web服务主机中。另一方面是包含一些简单的东西,例如< UsernameToken>在对主机的请求中,并对WS-Trust服务器进行服务器端委托身份验证。
对WS-Trust有非常好的客户端支持--WCF支持开箱即用,各种供应商都有针对JAX-RPC和JAX-WS Web服务的J2EE拦截器。
虽然WS-Trust的重点是身份验证,但您可以使用有关何时发出或验证收到的令牌的逻辑来执行粗粒度授权。不要发布/验证令牌,并且有效拒绝访问。 Web服务的细粒度授权通常需要一些特定于供应商的自定义拦截器。
我在IBM Tivoli Security工作,我们在这个领域有一些产品。第一个是Tivoli Federated Identity Manager(TFIM)。一位同事和我自己写了this article关于将TFIM与基于WSE的Web服务集成,并概述了WS-Trust协议本身。第二个产品是Tivoli安全策略管理器(TSPM),它实现了对Web服务的细粒度授权。
这些协议有开源实现,这是使用基于标准的解决方案的优势。我相信JBoss和WSO的实现可能很有用。
答案 2 :(得分:0)
这不就是OpenID的用途吗?
如果我错了,请务必纠正我。