webservice的认识



对外webservice服务通常在服务端对外走http协议居多,但webservcie并不局限于http协议,这是需要了解的.
webservice服务现实中最终使用者往往不是普通意义上的人,说的更明了一些,浏览器通常不是webservice的客户端,即使是有,也会受到浏览器的诸多跨域限制,而没有实际使用的意义
那么webservice服务的客户端通常是什么呢?类似于soapui,Connection等工具,其实在java的世界里估计最终的客户端都是Connection
不是java的世界,也是某种与服务器可以建立连接的组件,或为http连接,或为socket连接,这主要取决于服务端提供的协议,以当前平台提供
的服务那就是http连接.

浏览器虽然可以与服务器建立http连接,但是浏览器不便于发送soap报文,但是它有一个巨大的优势,可以维持同服务器会话;
在现实中使用webservice服务的客户端通常来自于另一台服务器的Connection连接,这种连接通常要维持一个会话不是那么容易
这需要程序员通过编程来进行处理.

在身份验证方面,将业务系统登录webservcie服务的帐户与业务系统自己的账户体系或服务端的帐户体系混为一谈也是不合适宜的
业务系统的帐户体系与服务端的帐户体系可能是同步的,也可能不同步,他们有一定程度上的相似性,但是webservice的身份验证与
他们有很大的差异性,主要体现业务系统发起webservice请求,在很多情况下是由系统自身发起(比如组织架构同步服务),而不是由系统内的某个人发起的,
这种身份验证属于系统级验证;但是这也不是绝对的,有些webservice服务请求也是由业务系统内的人发起的(比如待办事宜的短信发送)
另外还涉及到一个问题:webservice服务自身对业务发起人身份要求,有些服务对业务发起人的身份敏感,必须要提供发起人的身份,而有些要求不是很严格.

因此我认为:webservice服务的身份验证分为两个级别,系统级身份验证与业务级身份验证,系统级身份验证是调用webservice服务的前提条件,如果系统级验证
不通过,绝对不能调用服务,业务级验证是对调用服务的补充,可以传递身份验证信息(包括用户名称与密码),也可以只传递一个身份信息,或者没有身份,这与具体的
业务服务相关.

是否可以将业务系统内的帐户体系中的身份信息作为webservice服务的系统级验证的凭据呢?我认为技术上是可以的,但实际的使用中我认为是不可取
毕竟请求的发起者通常都是由业务系统端发起的,而不是由浏览器端直接发起的,就算是浏览器端的用户触发了一个webservice请求,也是浏览器端
委托业务系统发起的,因此可以用系统级验证凭据,代理业务级的验证凭据.
采用这种业务系统级身份凭据代理业务级的身份凭据有一个巨大的好处就是如果业务系统与服务端之间需要维持webservice服务的会话,会话的数量会很少
通常一个业务系统与一个服务端只需要维持一个会话.

webservice服务的身份验证实际可以认为就只有业务系统级验证,而这种验证的凭据实际是服务端颁发给业务系统的,而不是服务端颁发给业务系统中的某个人的
因此服务端需要提供一个关于业务系统凭据的管理机制,最好可以提供一个由业务系统维护敏感信息接口.

你可能感兴趣的:(webservice)