我正在为具有非常具体的高级别要求的客户端开发一个与 ESB 一起使用的安全组件:
- 集成到现有的 IWay 服务管理器版本 5.5 ESB(现有设置中没有安全系统)。
- 从存储在用于另一个系统(最好使用 LDAP)的现有活动目录服务器中的源数据中提供身份验证和授权级别信息。
- 身份验证和授权应在 ESB 中执行,因为 ESB 的接口将同时暴露给内部和外部客户端,因此无法完全控制客户端。
- 不能依赖客户端拥有证书来允许双边 SSL 身份验证,但是单边身份验证,客户端检查他是否访问正确的服务器是可能的,因此可以建立 HTTPS 连接。
- 该服务应该位于 Weblogic 上(但无论如何我都会很乐意接受建议)
更多信息:IWay ESB 是一个商业的、封闭的和相当差的解决方案,在 5.5 版中,它没有提供符合要求的开箱即用解决方案。它也是无状态的,因此除了使用 cookie 或某种类似于存储信息的方法之外,无法维护任何会话。
当前想法:实现一个添加到消息传递总线的 SSO 服务,该服务提供身份提供者、服务提供者功能,因此初始身份验证将提供一个令牌,然后可以由客户端存储并与每个后续请求一起传递经过身份验证并通过了授权级别(我认为这是一个相当标准的设计模式)。
已经对 SSO + SAML 实施进行了研究,openAM、Shibboleth、CAS 似乎都提供了一个过于完整的解决方案,该解决方案更适合门户类型架构(如 CAS)或来自初始 SAML 身份令牌从另一个接收的系统完全切断,然后带到系统中(就像谷歌对其某些服务的 SAML 实施)。
我还研究了 JBossESB、openESB 和服务混合解决方案,它们似乎使用了无法移植到 Weblogic 和 Zxid 的定制 SAML 实现,而 Zxid 的文档有限。
这是一项复杂的工作,因此我期待更多高级架构风格和库/项目建议,而不是完整的解决方案。我的印象是这应该是一个相当普遍的要求,一个 ESB 的身份验证和授权服务,它使用令牌系统来防止必须连续输入或以纯文本形式存储凭据,但我找不到太多信息,什么我失踪了吗?
如有任何进一步的问题,我将非常乐意详细说明。