Наша компания использует систему доступа Oracle для единого входа SAML. Я реализовал весеннюю безопасность с помощью библиотеки SAML Spring Security, она отлично работала, пока я недавно не нашел одну проблему. Oracle Access System использует OBSSOCookie в качестве идентификатора, но при ответе ответа saml ответа у меня нет способа получить этот файл cookie. Посмотрите на этот код:Весенняя безопасность saml и OBSSOCookie
@RequestMapping(value = "/callback")
public void callback(HttpServletRequest request, HttpServletResponse response)
throws IOException, NoSuchPaddingException, IllegalBlockSizeException, BadPaddingException {
Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
SAMLCredential credential = (SAMLCredential) authentication.getCredentials();
try {
XMLHelper.nodeToString(SAMLUtil.marshallMessage(credential.getAuthenticationAssertion()));
} catch (MessageEncodingException e) {
e.printStackTrace();
}
String nameID = credential.getNameID().getValue();
List<Attribute> attributes = credential.getAttributes();
JSONObject jso = new JSONObject();
String uid;
String employeeType="";
String company_name="";
String FirstName;
String roles_entitled="";
String LastName;
String primary_role="";
jso.put("nameID", nameID);
jso.put("uid", uid);
jso.put("company_name", company_name);
jso.put("roles_entitled", roles_entitled);
jso.put("primary_role", primary_role);
jso.put("employeeType", employeeType);
jso.put("FirstName", FirstName);
jso.put("LastName", LastName);
String frontend_url = sideCarService.getFrontendNodeUrl();
String token = KeyGenerator.createUserToken(jso, 3600 * 24 * 30);
String encoded = new String(Base64.encodeBase64(jso.toString().getBytes()));
response.sendRedirect(frontend_url + "#t/" + token + "/atts/" + encoded);
}
Глядя на этот код, я могу получить всю информацию от ответа SAML, а затем генерировать маркер, отдавая FRONTEND печенье для использования.
Но я действительно хочу получить OBSSOCookie, так что я могу использовать с другим микросервисом для извлечения данных из другого приложения, использующего такое же решение для входа saml.
Я попытался выполнить запрос request.getHeaders(), но ответ пуст. Нет OBSSOCookie вообще.
Любая идея получения OBSSOCookie из весенней библиотеки saml?
Благодаря
Вам понадобится использовать OAM SDK для этого ... –