首页 新闻 会员 周边 捐助

webapi身份认证和授权

0
悬赏园豆:10 [已解决问题] 解决于 2019-04-12 10:57

是这样的,我即将做一个api服务,给公司的各个业务系统使用,但是接口要加个身份认证,只有我这边同意过的系统才能调用我的接口。
这几天我网上get了一下身份认证和授权的相关知识点,得出如下一个思路:
使用token进行认证和授权操作
(1)用户使用用户名密码来请求服务器
(2)服务器进行验证用户的信息服务器通过验证发送给用户一个token
(3)客户端存储token,并在每次请求时附送上这个token值服务端验证token值,并返回数据
(4)这个token必须要在每次请求时传递给服务端,它应该保存在请求头里

但是我现在有个问题是,如果这套用户名和密码是我告诉各个业务子系统的话,那我为什么不直接给他们指定一个token?
如果通过我给他们用户名和密码,他们通过用户名和密码来请求我的认证接口获得token,再来请求业务api的话,那他们每次请求业务api的时候就会有个定期请求token的过程,假如是token过期,他们的逻辑里还得有个重新请求token,再重新请求接口的过程,这样好像很撇脚。
最后一方面,如果是我给他们提供一个注册页面,通过他们注册我来审核这样分配用户名和密码的话,第一个问题就没有了,那就是需要解决第二个问题。
现在有点乱,因为之前没搞过认证授权。网上看到的需要使用认证授权的场景和我的场景不太符合,因为我这只有两个关系,一个api服务,一个业务系统,没有别的了。是不是我想问题复杂化了?

问题补充:

我目前做了一个demo,是参照这个案例做的,https://www.cnblogs.com/lnice/p/6857203.html
流程都是通的,但是在第二个问题上有点纠结。

顾星河的主页 顾星河 | 大侠五级 | 园豆:7262
提问于:2019-04-12 09:00
< >
分享
最佳答案
0

关于第二个问题,每次请求token的问题,这个可以在业务系统里,定期更新token,使token一直都是最新的,不过期的,这样就不撇脚了。
另,如何设计看自己了,复杂点可以分离出一个认证授权服务,简单点就api端给web端指定一个token。

顾星河 | 大侠五级 |园豆:7262 | 2019-04-12 10:53
其他回答(2)
0

为啥不参照微信公众号的api 授权使用方式及其验证方式

收获园豆:10
通信的搞程序 | 园豆:1757 (小虾三级) | 2019-04-12 09:44

我、微信、第三方应用,是三个对象,我在访问第三方资源时通过微信授权,账号密码在微信这里,访问第三方通过微信给的token去访问,这样的机制好处是我不用告诉第三方我的微信账号和密码是什么。
而我现在项目的场景里,只有我(业务系统)、第三方应用(我的api服务),少了一个微信(认证授权的地方),目前我的demo里把认证和授权写在api这边了,所以我就觉得很撇脚,相当于是api负责了两个角色,资源拥有者和认证授权者,qwq
不过我好像也逐渐明白了什么,我没有把认证授权分出去作为一个服务。不过我这里做的api服务基本都是自己公司在用,再去搞一套认证授权服务是不是有点多余?

支持(0) 反对(0) 顾星河 | 园豆:7262 (大侠五级) | 2019-04-12 09:56
0

公司内部的api,不建议增加鉴权。假设要暴露出去服务,应该由统一的网关干这个事情。

czd890 | 园豆:14482 (专家六级) | 2019-04-12 10:56

嗯嗯

支持(0) 反对(0) 顾星河 | 园豆:7262 (大侠五级) | 2019-04-12 10:59
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册