Java 如何为SpringRESTAPI提供安全性?

Java 如何为SpringRESTAPI提供安全性?,java,spring,Java,Spring,API客户端具有用户名和密码 在postman中,客户端选择基本身份验证并输入用户名和密码。当向服务器发出请求时,邮递员向服务器发送基本身份验证令牌 现在在服务器端,我们只有一个包含用户名和密码的表。我们没有为客户端维护任何角色,这就是为什么我们只有一个表。现在,如何使用基本身份验证令牌解析用户名和密码。一旦解决了如何将其与存储在数据库中的用户名和密码进行比较 我是SPRING的初学者,很长一段时间以来一直在努力实现它。 请提供帮助。尝试使用Spring security。这是简单而健壮的。您可

API客户端具有用户名和密码

在postman中,客户端选择基本身份验证并输入用户名和密码。当向服务器发出请求时,邮递员向服务器发送基本身份验证令牌

现在在服务器端,我们只有一个包含用户名和密码的表。我们没有为客户端维护任何角色,这就是为什么我们只有一个表。现在,如何使用基本身份验证令牌解析用户名和密码。一旦解决了如何将其与存储在数据库中的用户名和密码进行比较


我是SPRING的初学者,很长一段时间以来一直在努力实现它。
请提供帮助。

尝试使用Spring security。这是简单而健壮的。您可以通过创建WebSecurityConfigAdapter为应用程序启用http基本安全性。
security/site/docs/current/reference/html/jc.html#jc-httpsecurity

如果不想使用Spring安全性,可以编写自定义实现。Http基本身份验证令牌是用户名和密码的冒号分隔的base64编码形式。例如,用户名和密码以用户名:密码的base64编码形式发送。 因此,您可以添加一个SecurityFilter,如下所示

public class SecurityFilter implements Filter{  
public void doFilter(ServletRequest req, ServletResponse resp,  
    FilterChain chain) throws IOException, ServletException {  
    String auth = httpRequest.getHeader("Authorization");
    if (auth != null && auth.startsWith("Basic")) {
        String base64Auth = auth.substring("Basic".length()).trim();
        String credentials = new String(Base64.getDecoder().decode(base64Auth),
                Charset.forName("UTF-8"));
        String[] usernamePassword = credentials.split(":",2);
    // Query to database and do authentication here using username and password. 
    //if(successfull)
    //    chain.doFilter(req, resp);
    //else
    //    return 401 error
}  

}
你可以阅读这个主题。
这很有帮助。它基于jwt身份验证。

您可以选择为我们提供安全性的spring安全框架。我找到了一些关于这个概念的教程。但它都是基于角色的身份验证。是的,它是基于角色的身份验证。您能告诉我如何在没有基于角色的身份验证的情况下进行身份验证吗。直接在数据库中使用用户名和密码“我是SPRING的初学者,在很长一段时间内一直在努力实现它。”如果你是SPRING的初学者,你不可能一直在努力很长时间。