SOA服务设计/认证

我是SOA的新手,因此我在试验.

目前,给我带来最大问题的部分是身份验证,我目前对它的想法涉及以下内容:

客户端向身份验证/用户服务发送某种身份验证消息,此服务查询数据库,如果找到用户并且密码有效,它将以会话ID响应,此ID将用于所有进一步的请求这个客户.

这似乎对我来说还不错,但我不知道如何处理对其他服务的请求,我想到了三种不同的方法.

>如果会话有效,每个服务都会询问身份验证服务,如果有效,则询问用户所处的角色.身份验证服务在数据库中查找并相应地进行回复.
>身份验证服务将所有会话信息保留在ram中,并在没有db往返请求的情况下响应.
>身份验证服务向esb发送授权消息,esb将此授权消息转发给每个服务,这些服务将其缓存.不需要进一步请求身份验证服务.如果用户注销或他的角色发生变化,则会发送另一条消息并由所有服务进行处理.

我认为第一种方法对身份验证服务/ db造成了太大的压力,但实施起来却花费最少.

第二个仍然很容易实现,但对身份验证服务的压力几乎保持不变.

第三个实现起来要复杂一些,但由于不会访问认证服务,因此响应时间会缩短.但是,如果会话信息太多,这种方法就会失败,并且很难给出可扩展性.

如果所有服务都是内部的,那么最佳方法应该是这样的,

>身份验证服务向服务客户端发出令牌.
>服务客户端包括WS-Security中包含的SOA消息中的令牌或类似的东西.
>在提供服务之前,服务应使用身份验证服务验证令牌.

对于外部服务,我建议您查看SAML等联邦解决方案.

相关文章
相关标签/搜索