如何对项目暴露的webapi进行安全认证? - 服务报错-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

如何对项目暴露的webapi进行安全认证? - 服务报错

montos 2020-06-03 20:28:56 25

现在做的B/S项目为了提供给客户端ajax获取和提交数据的接口,加了很多webapi,只需要传递相关的参数即可获取请求结果,感觉像裸奔一样!我想给现有的项目或者刚开始的Java项目加上Http Digest认证,以保证所有访问我的webspi的请求都经过了认证,客户端和服务器端需要做哪些特殊处理呢?tomcat需要做相关的配置吗?我现在只了解Http的认证方式,但如果将其应用到项目中感觉还是一团迷雾,网上也搜不到相关的实例,哪位懂这方面的或者实践过的大虾能给我讲解一下,或者对我这种想法有什么不合理的地方也可以指出来?谢谢。

安全
分享到
取消 提交回答
全部回答(1)
  • montos
    2020-06-03 22:34:05

    "

    介绍了Amazon S3 使用的认证:

    http://dodomail.iteye.com/blog/1744389

    ######这个很简单啊,把所有参数都做一次加密就是,秘钥你来生成授权给你的下游就是了,后台再做记录ip的的功能,这样谁请求你的API了就都知道了,自己实现也很快的######tokening,或者id这些加密,获取后再解密,密钥自己生成。就是加个验证的key值就可以吧,每次提交数据验证key的正确性######

    做一个认证服务,提供一个认证的webapi,用户先访问它获取token,然后拿着token去访问所有的webapi。每次接收到请求就拿着token找认证服务寻求验证。验证通过则papapa,不然就404。

    你要说的是这种么?还是对访问做验证限制?

    ######回复 @devilsitan : 也是啊,那你再看看刚刚问的第二个问题###### @liujiduo tomcat只是个web服务器。。不明白为什么和它要有关呢。。webapi又不是在tomcat上跑的。######回复 @devilsitan : 还有就是这种给webapi加token认证的方式,应该是我事先给某些指定的APP(比如我的iOS客户端或安卓客户端)发放私钥,然后它们根据私钥获取token。那如果我的网站前端通过ajax访问这些api是不是也需要通过token认证呢?如果是的话那不就会暴露出私钥了吗?先谢谢啦^_^######回复 @devilsitan : 那另一种 基于HTTP Digest认证的方式也是只用代码实现,不需要修改tomcat的配置吗?###### @liujiduo 那这种和服务器就没多大关系了啥。。只要你有webapi服务在就行,什么访问都是通过HTTP来请求的。接口也很简单一个认证,一个验证。认证服务内部看你怎么设计,要么是简单的用户-权限,要么是用户-角色-权限,要么是带约束的用户-角色-权限,还有更加灵活的二者皆有,采取优先拒绝。######

    引用来自“devilsitan”的评论

    做一个认证服务,提供一个认证的webapi,用户先访问它获取token,然后拿着token去访问所有的webapi。每次接收到请求就拿着token找认证服务寻求验证。验证通过则papapa,不然就404。

    你要说的是这种么?还是对访问做验证限制?

    肯定是要带Token的,访问还是用户名密码,认证通过cookie里存的就是用户名和token,token是有有效期的,过了有效期你就需要重新分配一个token。这个暴露问题,我也不知道肿么办,不过人家要存心搞你,这些还有用么。你看Digest还不是私钥放在cookie里,虽然用算法加密一次和服务器比对,人家只需要截下你的包,把加密后的验证字符拿去验证就是了。我没看出什么区别######回复 @liujiduo : 可以参考上面的那位给的亚马逊s3的rest api认证。也可以看下openstack的keystone的验证模式。都是一个令牌,就看你怎么用和。简单的就是我前面说的那样,复杂的更安全的就是他们那样。######明白了,谢谢!######

    ######ajax的时候检测客户端用户权限不可以吗?###### Http Digest认证也就是防止重放攻击,如果是局域网项目感觉对认证的要求不用太高,主要还是网络安全和访问的监控和预警,要是互联网的觉得还是非对称签名比较安全,存粹算法决定。######

    引用来自“HandMU”的评论

    ajax的时候检测客户端用户权限不可以吗?
    用户权限是跟用户绑定的,而客户端访问接口可能没有用户的概念,这样就不合适了啊######回复 @HandMU : 你没明白他意思,webapi,可能是非本系统用户######可参考open auth######回复 @liujiduo : 都会有基于用户权限检测的。你钻到死角了。######回复 @HandMU : 是啊,难道对于webapi的安全认证就没有一个好的办法么?不知道淘宝这些网站是怎么做的######ajax理论上还是post、get,依然带上所有你能使用的用户信息。######

    引用来自“刘敬伟”的评论

    Http Digest认证也就是防止重放攻击,如果是局域网项目感觉对认证的要求不用太高,主要还是网络安全和访问的监控和预警,要是互联网的觉得还是非对称签名比较安全,存粹算法决定。
    不是局域网项目,我是想让某些数据敏感的接口只能被已授权的客户端访问,而不是让别人只要知道了url就能恶意请求和操纵我的接口,我查了Http Basic和Http Digest的认证流程,但就是不清楚怎么应用到项目中来。######我觉得你的思路有点混乱,没搞清楚到底认证什么,怎么认证,认证力度如何。这些都要根据你的网络环境、服务器系统、还有你处理的数据类型有关系。如果不想用第三方安全策略,我建议采用非对称的安全算法,针对用户信息最签名和验证。在这个基础上对你接口接收的用户请求进行监控,如果有必要的话你接收的数据要进行过滤,就像支付宝也不是实时到账,中间肯定有一个审核数据的再次分发的缓冲处理机制。"
    0 0
+ 订阅

云安全开发者的大本营

推荐文章
相似问题
推荐课程