Я работаю с запросом SAML, используя привязку HTTP-перенаправления. В другом посте я прочитал, что для получения исходного содержимого запроса SAML (параметр SAMLRequest в URL) требуются следующие шаги:
- Декодирование URL
- Декодирование Base64
- Раздувание контента
Хотя эти шаги мне совершенно понятны, я не могу получить запрос SAML в формате XML. Я считаю, что ошибка заключается в третьем шаге, может быть, существует более одного способа, чтобы накачать байты? Это функция Java, которая выполняет три указанных выше параметра, учитывая аргумент, который является значением параметра SAML в URL.
private String decodeMessage(String SAMLContent) {
try {
//URLDecode, Base64 and inflate data
//URLDecode
SAMLContent = URLDecoder.decode(SAMLContent, "UTF-8");
//Base64 decoding
SAMLContent = new String(Base64.getDecoder().decode(SAMLContent), "UTF-8");
//Inflating data
try {
byte[] compressed = new byte[10 * SAMLContent.getBytes().length];
Inflater i = new Inflater(true);
i.setInput(SAMLContent.getBytes(), 0, SAMLContent.getBytes().length);
int finalSize = i.inflate(compressed);
//Exception is thrown here
SAMLContent = new String(SAMLContent.getBytes(), 0, finalSize, "UTF-8");
i.end();
} catch (DataFormatException ex) {
JOptionPane.showMessageDialog(null, "DFE: " + ex.getMessage());
}
} catch (UnsupportedEncodingException ex) {
JOptionPane.showMessageDialog(null, "UEE: " + ex.getMessage());
}
return SAMLContent;
}
Если я скопирую и вставлю выходные данные первого шага здесь , я вижу хорошо отформатированный XML внизу страницы, так что, по крайней мере, декодирование URL работает как задумано. Если у вас есть решение, пожалуйста, дайте мне знать, спасибо.