как аутентифицировать веб-сервис REST Get Call с использованием учетных данных страницы веб-входа - PullRequest
0 голосов
/ 14 февраля 2019

У меня есть приложение A (клиент), которое выполняет веб-сервис GET для вызова приложения B (сервер).Приложение B использует перенаправление аутентификации веб-страницы для всех этих входящих запросов веб-службы.AppB обрабатывает GET-запрос примерно так:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
        {
// code lines
//....
..
String login_URL = "https://sometestsite.com/pagLogin";
StringBuffer baseURL = request.getRequestURL();
String query = request.getQueryString();
String encReturnURL = URLEncoder.encode(baseURL.toString() + "?" + query, "UTF-8");
String final_URL = login_URL + encReturnURL ;
Cookie[] cookies = request.getCookies();
    if ((cookies == null) || (cookies.length == 0))
    {
        response.sendRedirect(noCookieURL);
                return;
    }
String cookieValue= null;

for (int i = 0; i < cookies.length; i++)
        {
            Cookie thisCookie = cookies[i];
            String cookieName = thisCookie.getName();

            if (cookieName == null)
            {               
                //logger.info("cookieName is null");
            }
            //logger.info("cookieName is " + cookieName);

            if (cookieName.equals("myCookie"))
            {           
                cookieValue = thisCookie.getValue();
                break;
            }
        }

String ESEncypt = esGatekeeper.esGatekeeper(cookieValue,"password");
if(ESEncrypt satisfies some condition){
    // construct output message and response
    String output = "{Some JSON message}";
    response.setContentType("application/json");
    response.getWriter().append(output);
}

}

Я работаю на стороне appA (клиента), чтобы делать запросы к appB (серверу), appA - это java, REST, микросервис на основе весенней загрузки.

Question: How can I successfully get through this authentication?

1) В appA я пытался использовать ApacheHttpClient и URLConnection для установления соединения с URL: https://sometestsite.com/pagLogin.и попытался отправить куки на сервер appB, используя setRequestProperty("cookieName","value") на HttpURLConnection.

2) поскольку appB использует sendRedirect в случае, если cookie не существует, как (рекомендуется) отправлять учетные данные для входа в систему вместе с запросом get из appA в appB, чтобы appB мог пересылать эти данные, когда он делаетsendRedirect Звоните.

1 Ответ

0 голосов
/ 15 февраля 2019

Кажется, что в настройке реализован тип предоставления кода авторизации OAuth2.0.В терминологии OAuth2.0 сервер, на котором размещена страница входа, называется «сервером авторизации», сервер, на котором размещен API или любой веб-сайт, требующий аутентификации, называется «сервером ресурсов», а приложение, пытающееся использовать API, называется «клиентом».

Теперь, если «Клиент» действует от имени пользователя (учитывая, что конечный пользователь хочет войти в веб-приложение), описанная вами установка является правильной.Можно использовать любой из типа предоставления кода авторизации, типа неявного предоставления и типа предоставления пароля владельца ресурса, и каждый из них будет перенаправлять пользователя на страницу входа, как вы упомянули выше.

Но когда «Клиент»не действует от имени какого-либо отдельного пользователя (например, пакетное задание), так как в вашем случае, тип использования, который будет использоваться, является типом разрешения Client Credential.Здесь перенаправление на страницу входа не произойдет.Вместо этого «клиент» будет напрямую связываться с «сервером авторизации» с помощью идентификатора клиента и секрета клиента, а «сервер авторизации» возвращает код доступа.Клиент может связываться с API в «сервере ресурсов» с помощью кода доступа (может быть через cookie).

Подробные сведения см. В описании типа предоставления учетных данных клиента в спецификации RFC 6749 OAuth2.0.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...