Я пытаюсь войти на веб-страницу, подтвердить в бэкэнде и ответить с помощью cookie-файла httpOnly, который должен отправляться при каждом запросе бэкэнда после SSO входа в систему (Single Sign On), поэтому.
У меня есть веб-приложение для входа в систему, реагирующее с axios для входа в систему. Я могу отправить свои учетные данные на сервер в Java.
там, в моем бэкэнде, я проверяю пользователя и пароль, и если он правильный, тогда я создаю токен JWT и файл cookie httpOnly, чтобы сохранить этот токен.
проблема в том, что я не могу получить cookie из моего бэкэнда после успешного входа в систему.
Код внешнего интерфейса:
export async function getAuthToken(data,flag) {
console.log(data);
try {
const { userName, password } = data;
const tok = `${userName}:${password}`;
const hash = btoa(tok);
const Basic = "Basic " + hash;
let res = await axios.post(getAPIUrl(flag) + AUTH_URL, "",{
headers: {
Authorization: Basic,
withCredentials:true,
Accept: '*/*',
'Content-Type': 'application/json',
'Cache': "no-cache",
'Access-Control-Allow-Origin': '*',
'Access-Control-Allow-Headers': "Content-Type,Authorization,X-Requested-With,Content-Length,Accept,Origin,"
},
});
return {status:res.status,value:getNavigationUrl()};
} catch (error) {
console.log(error.response);
alert("Status Code " + error.response.status);
return {status:error.response.status,value:error.message};
}
бэкэнд:
public Route basicAuthentication() {
return (request, response) -> {
// response.header("Access-Control-Allow-Origin","http://localhost:3000");
LOGGER.info("Authenticating account");
// Get the authentication passed in HTTP headers parameters
String auth = request.headers(Constant.AUTHENTICATION_HEADER);
if (isBlank(auth)) {
throw new WebApplicationException(Status.UNAUTHORIZED);
}
if (!auth.startsWith(Constant.BASIC_AUTHENTICATION_SCHEME)) {
Spark.halt(403, Constant.UNSUPORTED_AUTH );
}
List<String> tokens = decode(auth);
// Check for total tokens.
if (tokens == null || tokens.size() != 2) {
throw new InvalidUserException(Constant.INVALID_TOKEN);
}
String username = tokens.get(0).trim();
String password = tokens.get(1).trim();
String jwtToken = "";
try {
User user = userService.authenticateUser(username, password);
UserPreference preference = userService.getUserPreference(user.getLoginId());
Builder userBuilder =
new Builder(user.getLoginId(), user.getTenant()).userRole(user.getUserRole());
if (preference != null) {
userBuilder.email(preference.getEmailId()).name(preference.getDisplayName());
}
jwtToken = JWTHelper.createJWT(user.getLoginId(), "" + user.getTenant());
request.attribute(Constants.LOGGED_USER, user);
response.cookie("/",Constant.COOKIE_NAME,jwtToken,7600,false,true);
} catch (InvalidUserException iue) {
Spark.halt(403, iue.getMessage());
}
return Constant.SUCCESS;
};
}
! [Ответ - это успех, я знаю, что бэкэнд создает cookie, потому что в почтовом отделе работает] https://drive.google.com/open?id=1dERLMnh5h-3YQXRQeymSv8nu4cSwaDQo
! [Но в моем интерфейсе я не могу получить это печенье] https://drive.google.com/open?id=11SHJSLqMxnyStzCBgBixrPD1Z5t39ZkW