如何防止经过身份验证的用户欺骗宁静的api调用

时间:2019-03-05 22:11:48

标签: rest api

因此,我构建了一个宁静的api。它具有/ account / {id}端点以返回用户数据。通过身份服务器对api进行保护,该身份服务器向请求者发出可以访问/ account / {id}端点的JSON Web令牌(JWT)。因此,用户使用用户名和密码发送请求,并收到JWT作为成功身份验证的回报。现在,用户将其帐户信息的请求发送到/ account / {id}。在标头中发送带有令牌的请求,并返回200响应以及有效载荷中的用户数据。

如何在端点中授权{id}?换句话说,经过身份验证的用户可以只在端点中添加任何{id}并可能接收其他用户的数据。如何防止使用JWT?

1 个答案:

答案 0 :(得分:1)

您可以将数据存储在Web令牌中。如果存储用户的ID,则可以针对他们的每个请求识别他们。这是安全的,因为令牌的内容是使用服务器的私钥签名的。因此,它们的内容无法更改。

之后,您可以限制API,以便每个用户只能查询自己的记录,也可以实施复杂的角色系统,其中每个用户都有一组角色(例如,,{{ 1}},public static int getFileColumnsNumber(String filename) { File file = new File(filename); Scanner scanner; try { scanner = new Scanner(file); } catch (FileNotFoundException e) { e.printStackTrace(); return -1; } int number = 0; if (scanner.hasNextLine()) { number = scanner.nextLine().split(",").length; } scanner.close(); return number; } public static void main(String[] args) { String filename = "test.txt"; System.out.println(getFileColumnsNumber(filename)); } read-onlyguest等)来定义哪些端点及其使用方式。