在系统实施的过程中,经常遇到与别的系统做接口的情况。如果业务比较简单,就是发送消息等那比较好解决,但如果是数据库操作就比较麻烦,因涉及到多个数据库之间的安全问题。
比如A系统中需要修改B系统的数据库中的数据,就这种情况有很多种的解决方案。比如
1、A系统在了解B系统的数据库结构的前提下,在A系统的权限管理中直接设置操作B系统数据库的权限。
这种方式从安全的角度来说应该是比较高的,但是带来很多的问题,特别系统的健壮性比较差,当B系统的数据库结构更改时,直接影响到A系统的系统接口和权限管理部分。 何况,还需要去熟悉别的数据库结构。
2、B系统提供接口,供A系统调用。这种方式的好外是两个系统之间的耦合度降低,系统方便维护和扩展,但是带来的问题是:当A系统调用B系统时,如何保存A系统调用时的安全? 比如B系统接口中有一个这样的方法 bool InsertData(...) ,用于向数据库中插入一条记录,这样在A系统中可以直接调用这个方法。但是问题是 A系统通过什么方式登录B系统的数据库?B系统如何验证A系统合法性?是不是其它的系统也能随意使用这个接口,操作数据库中的数据?
那问题怎么解决呢?
第一种方案基本上不考虑,在第二种方案中我想了加一个验证来解决。
B系统中提供一个调用验证,使用不对称加密的方式,B系统中存储公钥,A系统在执行B系统的验证时,提供一个私钥,与B系统的公钥验证,如果验证通过,则B系统初始化数据库,供A调用相关方法,否则,在A调用方法时,给出验证不通过的提示。
这是刚刚想到的办法,可能不是很成熟,不知道哪位有没有更理想的方法?