首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SOA服务设计/认证

SOA服务设计/认证
EN

Stack Overflow用户
提问于 2009-08-18 20:55:06
回答 2查看 4.7K关注 0票数 8

我对SOA相当陌生,因此我尝试了一下。

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

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

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

  1. 每个服务都询问身份验证服务会话是否有效,如果有效,用户在哪个角色。身份验证服务在db中查找并相应地作出答复。
  2. 身份验证服务将所有会话信息保存在ram中,并在不进行db往返请求的情况下响应。
  3. 身份验证服务向esb发送授权消息,esb将此授权消息转发给每个服务,这些服务缓存它。不再需要向身份验证服务提出进一步的请求。如果用户注销或其角色更改,则将发送另一条消息并由所有服务处理。

我认为第一种方法对身份验证服务/ db造成了太大的压力,但实现所花费的努力最少。

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

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-08-18 23:04:58

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

  1. 身份验证服务向服务客户端发出令牌。
  2. 服务客户端在封装在中的SOA消息中包含令牌,或者类似的内容。
  3. 在提供服务之前,服务应该使用身份验证服务验证令牌。

对于外部服务,我建议您查看像SAML这样的联邦解决方案。

票数 5
EN

Stack Overflow用户

发布于 2009-08-18 23:10:34

不要进行过早的优化。您的第3号选项,您承认实现起来会更加复杂,这是不必要的。选择选项2,如果这是你可以快速实现的。你可以稍后分析并修改它,但我敢打赌,当选择2时,你不会有“瓶颈”。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1296460

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档