restful api 接入第三方用户,验证问题
问题:现有一个系统server,系统内部有自己的用户跟用户验证机制,假设有第三方应用(app)要使用我这个server的服务,我在server和app之间设计了一个中间代理proxy,这个proxy的功能是做了一个用户映射,这个映射的作用是保证第三方app能够使用内部的server服务,而对内部server来说它不管用户是第三方的还是自己的用户,这个对server是透明的.代理的作用是保存了第三方用户(userA)跟内部为这个映射产生的用户(userIn)的一一对应关系。我现在的需求是每次外部用户userA要使用server,如何做验证。保证这个userA已经是在代理中做了映射关系?
个人思路:代理中产生一个唯一的userkey,userkey只有代理proxy和第三方app中知道(私钥)。每次验证的时候将(userkey+userA+curTimestamp(当前时间戳)+randomNum(随机数))这个加密,产生一个api_code,发送验证串的时候将api_code和里面的参数带到proxy验证,产生一个access_token和expire_time(token过期时间)。
请求:proxy?apicode=xxxxx&userA=3434&curTimestamp=1325485458&randomNum=515742115
返回 :{
"access_token":"tGzv3JOkF0XG5Qx2TlKWIA",//token,访问令牌
"expire_time" : 1426578521 //过期时间
}
问题1:刚开始我的理解是这样:只要验证第三方app,验证方法跟上面的方法一样,用户通信的时候只要发送token验证第三方app并且判断当前用户是否有在这个代理做了映射,就可以了,是否可行,有啥安全漏洞。
问题2:每次第三方用户跟server通信都需要发送这个access_token做认证,那不是每次通信都需要两个请求,还是有啥别的办法?
问题3:access_token 过期以后,重新发上面那个验证?
问题4:oAuth认证是基于用户名跟密码,产生accss_token和refresh_token,我这边是否需要用oAuth,还是我上面的这个思路已经可行?我那个私钥的思路是否可行,而不要oauth繁杂的认证过程
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
access_token 有过期时间,需要保存在本地,同时需要产生一个oauth code,当access_token过期时通过oauth code换取新的access_token;
app访问时,将access_token作为请求参数或者放到http header中;
access_token不能保证绝对安全,请求被拦截后一样可以模拟发起非法请求;
你的思路跟oAuth 2.0基本相同。