Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Authentication SOA服务设计/认证_Authentication_Soa - Fatal编程技术网

Authentication SOA服务设计/认证

Authentication SOA服务设计/认证,authentication,soa,Authentication,Soa,我对SOA还比较陌生,因此正在尝试 目前,给我造成最大问题的部分是身份验证,我目前的想法包括: 客户端向身份验证/用户服务发送某种身份验证消息,该服务查询数据库,如果找到用户且密码有效,它将使用会话id进行响应,该id将用于该客户端的所有进一步请求 这对我来说似乎还行,但我不知道该如何处理对其他服务的请求,我想到了三种不同的方法 每个服务都会询问身份验证服务会话是否有效,如果有效,则询问用户的角色。身份验证服务在数据库中查找并相应地作出响应 身份验证服务将所有会话信息保存在ram中,并响应请求,

我对SOA还比较陌生,因此正在尝试

目前,给我造成最大问题的部分是身份验证,我目前的想法包括:

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

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

  • 每个服务都会询问身份验证服务会话是否有效,如果有效,则询问用户的角色。身份验证服务在数据库中查找并相应地作出响应

  • 身份验证服务将所有会话信息保存在ram中,并响应请求,而无需db往返

  • 身份验证服务向esb发送授权消息,esb将该授权消息转发给每个服务,这些服务将其缓存。无需进一步请求验证服务。如果用户注销或其角色更改,则会发送另一条消息,并由所有服务处理

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

    第二种方法仍然很容易实现,但对身份验证服务的强调仍然几乎相同


    第三种方法实现起来有点复杂,但由于没有对身份验证服务的访问,因此会缩短响应时间。但是,如果会话信息太多,这种方法就会失败,而且很难提供可伸缩性。

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

  • 身份验证服务向服务客户端发出令牌
  • 服务客户机在WS-Security或类似内容中包装的SOA消息中包含令牌
  • 在提供服务之前,服务应使用身份验证服务验证令牌

  • 对于外部服务,我建议您考虑联邦解决方案,如。

    不要过早进行优化。您承认的第3个选项将更加复杂,不需要实施。如果您可以快速实现,请选择选项2。您可以稍后配置并更改它,但我敢打赌,在使用选项2时,您不会遇到“瓶颈”。

    您能回答吗?您能回答吗?