我使用SpringBoot构建了Rest Api,并使用Firebase实现了身份验证。SpringBoot Rest API自定义身份验证
我现在的问题是我想控制将访问我的应用程序的客户端应用程序。使用SpringSecurity的问题是,据我所知,我必须为它进行身份验证,而我只是想“允许客户端应用程序”。
有没有人有任何想法该怎么办?
我使用SpringBoot构建了Rest Api,并使用Firebase实现了身份验证。SpringBoot Rest API自定义身份验证
我现在的问题是我想控制将访问我的应用程序的客户端应用程序。使用SpringSecurity的问题是,据我所知,我必须为它进行身份验证,而我只是想“允许客户端应用程序”。
有没有人有任何想法该怎么办?
为您的客户提供一个唯一的密钥。您的微服务根据该密钥识别和验证任何请求。这也可以作为request parameter
给出。
假设您将密钥添加到名为my-key
的参数中,然后再处理您的逻辑,然后再验证您的密钥。这样的 -
你的休息控制器看起来像这 -
@RestController
class MyRest{
private static final String KEY = "someValue";
@RequestMapping("/some-mapping")
public @ResponseBody myMethod(@RequestParam(value="my-key", required=true) String key){
if(!validateRequest(key)){
//return error as response
}
System.out.println("Key Validation Successful!");
//here goes your logic
}
private boolean validateRequest(String key){
return key.equals(KEY);
}
}
才能访问该休息使用 - 如果你要允许一些客户绕过认证http://your-host:port/some-mapping?my-key=someValue
但是我会在哪里以及如何检查Spring中的密钥? –
用示例更新了答案:) –
这样,任何人都可以访问这些API。更好的方法是在POST中发送数据。但是,如果客户端可以发送“密钥”,则可以轻松使用正常的认证机制。 – Yasin
,有列入白名单的IP地址列表并检查每个传入请求的IP。如果IP位于列入白名单的API列表中,则无需进行身份验证。
使用HttpServletRequest.getRemoteAddr()
获取IP地址。
您的意思是说您不想为某些客户端执行身份验证? – Yasin
不要。所有客户端都必须通过身份验证,但此任务将成为Firebase。在我的服务器上,我将检查应用程序是否有权访问服务器。我的问题恰恰是验证应用程序。 –