如何在Spring中的REST Api中的休息调用中发送密码字符串?

时间:2017-01-06 15:41:22

标签: spring rest api passwords

嗨!

我使用Spring Boot的Spring Security进行了基本的用户身份验证。 我在应用程序的开头添加了一些默认用户,但我还必须实现一种在运行时创建新用户的方法。所以,我想创建一个新的RestControler调用来向Spring Security添加一个新用户。

要明确的是,我认为除了我在电话中实际发送请求参数时的部分时,我已经弄明白了。

所以,我的问题是:

在创建新用户时,在休息API呼叫中发送密码的最佳/最安全的方法是什么?

我想使用@PathVariable不是很安全,因为可以轻松拦截网址:

@RequestMapping(value = "add/{login}/{password}", method = PUT)
public User add(@PathVariable("login") String login,
                @PathVariable("password") String password) {

    return us.addUser(login, password);
}

@RequestParam

相同
@RequestMapping(value = "add", method = PUT)
public User add(@RequestParam(value = "login") String login,
                @RequestParam(value = "password") String password) {

    return us.addUser(login, password);
}

也许在标题中发送它们?

无论如何,这是我第一次做这样的事情,并且可以真正使用有关这种情况下常见做法的建议。干杯!

1 个答案:

答案 0 :(得分:2)

首先,您应该使用POST方法而不是PUT,因为PUT是一种幂等方法。

发送密码最安全的方法是使用@RequestBody。你可以使用这样的方法:

@RequestMapping(value = "add", method = POST)
public User add(@RequestBody User user) {

    return us.addUser(user);
}

请求看起来像这样:

{"username" : "user", "password" : "encoded_password"}