Цель
- Чтобы декодировать закодированный SAMLResponse на внутреннем сервере [a], который получен от одного поставщика идентификации, для дальнейшей аутентификации.
[a] - Здесь внутренний сервер выступает в качестве второго поставщика удостоверений.
Постановка задачи
- На внутреннем сервере SAMLResponse не декодируется с тем же кодом, который используется поставщиком услуг.
Фон
Использование Apache Tomcat
для сборки приложения
Использование onelogin-java-saml
CLIENTAPP
- поставщик услуг, переводит пользователя на страницу одного входа, где пользователь может ввести username
и password
.
ONELOGIN
является провайдером идентификации, проверяет username
и password
и отправляет SAMLResponse
на CLIENTAPP
. (Этот поток работает нормально сейчас)
DATASERVER
- внутренний сервер, который отвечает за создание объекта сеанса (токена, ролей) при авторизации пользователя. (Застрял здесь)
DATASERVER
успешно получает SAMLResponse
от CLIENTAPP
, тип переменной SAMLResponse
- String.
public Response authrizesso(){
System.out.println("SAML RESONSE ON DATASERVER:"+SAMLResponse);
}
Сбой при декодировании SAMLResponse
на DATASERVER
.
@POST
@Path("/sessionsso")
@Produces(MediaType.APPLICATION_JSON)
public Response authrizesso(
@FormParam("samlrequest") String SAMLResponse,
Auth auth = new Auth(request, response);
auth.processResponse();
final HttpRequest httpRequest = ServletUtils.makeHttpRequest(request);
final String samlResponseParameter httpRequest.getParameter("SAMLResponse");
if (!auth.isAuthenticated()) {
out.println("<div class=\"alert alert-danger\" role=\"alert\">Not authenticated</div>");
}