Java – is there a server independent way to implement basic authentication?

I'm trying to add basic authentication to my restful web service At present, I perform basic authentication on Apache Tomcat 6.0 server, but I need to deploy my web service on websphere application server 6.1 and I encountered problems running basic authentication on WebSphere

Is there a way to check the authentication header of HTTP request in Java? If the user name / password provided (encoded in Base64) does not match the known account, the user enters a new user name / password?

I've tried to implement spring security, but since my project doesn't have spring at all, trying to make it work is a great pain. I'm trying to find a simple solution to my fairly simple problem

The technologies I currently use include: Java, Jersey / jax-rs, eclipse with Maven plug-in

Solution

You should be able to set up a servlet filter that executes before the rest handler, check the "authorization" request header, base 64 decodes it, extract the user name and password, and verify it Something like this:

public void doFilter(ServletRequest req,ServletResponse res,FilterChain chain) {
  if (request instanceof HttpServletRequest) {
    HttpServletRequest request = (HttpServletRequest) req;
    String authHeader = Base64.decode(request.getHeader("Authorization"));
    String creds[] = authHeader.split(":");
    String username = creds[0],password = creds[1];
    // Verify the credentials here...
    if (authorized) {
      chain.doFilter(req,res,chain);
    } else {
      // Respond 401 Authorization required.
    }
  }
  doFilter(req,chain);
}

All servlet containers have a standard way to configure filter chains

The content of this article comes from the network collection of netizens. It is used as a learning reference. The copyright belongs to the original author.
THE END
分享
二维码
< <上一篇
下一篇>>