Как реализовать базовую аутентификацию и авторизацию JAX-RS для каждого запроса? Я делаю следующие шаги.
- принимает имя пользователя и пароль от
@HeaderParam
- расшифровка
- После аутентификации установите уникальный токен в заголовке ответа.
до этого шага работает нормально.
Но как я могу проверить пользователя на новый запрос? Для нового запроса @HeaderParam("Authorization")
является нулевым.
Мой код
@GET
@Path("/login")
public Response login(@HeaderParam("Authorization") String authString){
String reponseHeader="";
String reponseHeaderValue="";
int errorCode=0;
try{
if(authString!=null){
System.out.println("#########" + authString);
String[] authParts = authString.split("\\s+");
String authInfo = authParts[1];
// Decode the data back to original string
byte[] bytes = new BASE64Decoder().decodeBuffer(authInfo);
String decodedAuth = new String(bytes);
System.out.println(decodedAuth);
String[] credentials = decodedAuth.split(":");
UserAuthentication userAuthentication = getService(UserAuthentication.class);
if(userAuthentication == null)
throw new UserAuthenticationException("Unable to get UserAuthentication Service");
String userName = credentials[0];
String pwd = credentials[1];
LoginSession obj_Session = userAuthentication.authenticateUser(userName,pwd);
sessionCount = sessionCount + 1;
String strSessionKey = userName + "_" + sessionCount + "";
reponseHeaderValue="Basic "+strSessionKey;
reponseHeader="Authorization:";
errorCode=200;
}else{
reponseHeaderValue="User Visible Realm";
reponseHeader="WWW-Authenticate: Basic realm=";
errorCode=401;
}
}catch(Exception ex){
ex.printStackTrace();
}
return Response.ok().header(reponseHeader, reponseHeaderValue).status(errorCode).build();
}
Так я аутентифицирую пользователя. Как только он будет аутентифицирован для следующего запроса, т.е.
@GET
@Path("/")
@Produces(MediaType.APPLICATION_JSON + ";charset=utf-8")
@Consumes(MediaType.APPLICATION_JSON + ";charset=utf-8")
public String getProjectList(@HeaderParam("Authorization") String authString){
System.out.println("##############"+authString);
System.out.println("##############");
return authString;
}
Но @HeaderParam("Authorization")
- ноль, поэтому я не могу авторизовать пользователя.