Клиент автоматического входа с базовой аутентификацией на другой сайт с использованием Spring Boot - PullRequest
0 голосов
/ 31 октября 2018

У меня есть один веб-сайт, который можно назвать AutoLoginSite (http://mainsite.dev) а другой веб-сайт, которому требуется обычная аутентификация для просмотра других страниц, позволяет называть его MainSite ( Я не могу его коснуться )

Поэтому, когда пользователь открывает URL-адрес из AutoLoginSite, он будет перенаправлен на MainSite с проверенным статусом.

Итак, я пытаюсь создать контроллер автологина в приложении AutoLoginSite с помощью Spring Boot, вот контроллер:

@RequestMapping("/login")
public void login(HttpServletResponse servletResponse) {
    String loginUri = "http://mainsite.dev/authenticate";
    String redirectUri = "http://mainsite.dev/my-account/cards";
    String username = "customer";
    String password = "c123";

    DefaultHttpClient httpclient = new DefaultHttpClient();

    try {
        String encoding = Base64.getEncoder().encodeToString((username + ":" + password).getBytes());

        HttpPost httppost = new HttpPost(loginUri);
        httppost.setHeader("Authorization", "Basic " + encoding);

        System.out.println("executing request " + httppost.getRequestLine());
        HttpResponse response = httpclient.execute(httppost);
        HttpEntity entity = response.getEntity();

        System.out.println("Status : " + response.getStatusLine().getStatusCode());

    } catch(Exception ex) {
        ex.printStackTrace();
    }

    servletResponse.setHeader("Location", redirectUri);
    servletResponse.setStatus(302);
}

Я знаю, что я делаю это неправильно, потому что аутентифицированный пользователь - это сервер AutoLoginSite, а не клиент AutoLoginSite. Как я могу автоматически войти в систему клиента на другом веб-сайте, чтобы он мог получить доступ ко всем защищенным страницам MainSite?

1 Ответ

0 голосов
/ 31 октября 2018

Для вашего случая использования вы должны реализовать OAuth 2.0. При этом ваш AutoLoginSite будет служить сервером аутентификации для вашего сервера ресурсов MainSite . Первый пользователь должен будет войти на ваш сервер аутентификации. При успешной аутентификации ваш AutoLoginSite выдаст код авторизации, который затем можно будет использовать для авторизации пользователя на вашем сервере ресурсов. OAuth 2 предоставляет несколько «типов грантов» для разных вариантов использования. Вам необходимо определить свое требование и использовать его соответственно.

Посещение этой статьи может помочь вам получить больше информации по этому вопросу. https://medium.com/@akourtim.ahmed/oauth-2-centralized-authorization-with-spring-boot-2-0-2-and-spring-security-5-and-jdbc-token-store-8dbc063bd5d4

Spring OAuth 2.0: https://projects.spring.io/spring-security-oauth/docs/oauth2.html

...