Как декодировать SAMLResponse на собственном сервере | онелогин | HttpRequest и HttpResponse - PullRequest
0 голосов
/ 14 июня 2019

Цель

  • Чтобы декодировать закодированный 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>");
    }
...