我的本地网络中有一个网络设备(运行c ++),它运行一个http(s)服务器,并提供Restlike webservice接口,以提供控制设备的API。 现在我的问题是,如何使用Rest api授权用户(同一网络中的Android智能手机)? 场景如下:智能手机上的用户必须输入PIN码(4位数)以便从那时起访问api,应该可以调用所有其他REST API方法。
我的想法: 1)密码将通过http(s)POST主体发送到设备,设备检查是否正常。 2)如果PIN是正确的,设备将生成一个令牌,该令牌必须在将来的每个请求中使用。
所以我的问题是: *我应该如何使用c ++在设备上生成这样的令牌(什么算法) *如何在每次请求时传输令牌?作为查询参数?还是在POST体内?还是在标题中?
编辑:我也读到http basic authentication。这可以在我的设置中使用吗? 亲切的问候
答案 0 :(得分:0)
使用标题或POST正文提交令牌时,永远不要在Url中作为查询字符串的一部分。
请参阅REST的OWASP页面:https://www.owasp.org/index.php/REST_Security_Cheat_Sheet#Authentication_and_Session_Management
答案 1 :(得分:0)
简短的回答是:将其存储在标题中,代码可以使用哈希算法生成令牌,并且您的想法在第一点是正确的,但要确保这些令牌具有有限的生命周期。