Cloudfront перенаправляет на Ec2 Custom Origin после отправки формы запроса Отправить страницу входа в Springboot - PullRequest
0 голосов
/ 21 марта 2020

У меня есть простое приложение SpringBoot со страницей входа в систему и запросом формы POST после ввода имени пользователя и пароля, оно перенаправляет на панель управления приложения.

Я развернул приложение в Ec2, и оно работает нормально, когда я получаю к нему доступ, используя Ec2 Publi c DNS.

Затем я добавил дистрибутив CloudFront с Ec2 publi c DNS в качестве Пользовательский источник и другие основные конфигурации c, такие как перенаправление http на https. (Основная цель - сделать сайт безопасным с помощью https)

У меня нет собственного домена, и я хочу получить доступ к своему приложению с помощью конечной точки распространения Cloudfront.

URL-адрес Cloudfront -> https://d3rodcneilyanr.cloudfront.net/solar/login Ec2 Publi c DNS url -> ec2-52-1-127-167.compute-1.amazon aws .com / solar / login

Теперь для тестирования Вы можете ввести любое имя пользователя и пароль.

Тест 1 : если вы вводите имя пользователя и пароль и отправляете их в URL-адресе Cloudfront, он просто снова перенаправляет на страницу входа, но теперь URL имеет происхождение Ec2. (Это не должно происходить, так как я ожидаю появления ошибки или страницы успеха на основе имени пользователя и пароля)

Тест 2 : если вы введете правильное имя пользователя и пароль в URL-адресе Ec2 DNS он выводит вас на панель управления, в противном случае выдается сообщение об ошибке с неверным именем пользователя / паролем.

Цель : я пытаюсь избежать перенаправления при входе в систему с использованием URL-адреса входа CloudFront.

Примечание : При нажатии кнопки входа в систему он отправляет запрос POST, который я написал в моем jsp, как показано ниже. (Я читал, что Cloudfront не кэширует POST-запросы и, следовательно, может быть одной из причин, по которой он перенаправляет на источник, когда этот запрос происходит, но я не совсем уверен)

<form method="POST" action="${contextPath}/login" class="form-signin">
        <h2 class="form-heading" style="color: white;">Log in</h2>

        <div class="form-group ${error != null ? 'has-error' : ''}">
            <span>${message}</span> <input name="username" type="text"
                class="form-control" placeholder="Username" autofocus="true"
                style="border-radius: 1.2em;" /> <input name="password"
                type="password" class="form-control" placeholder="Password" 
                style="border-radius: 1.2em;" /> <span>${error}</span> <input
                type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}" />

            <button class="btn btn-lg btn-primary btn-block" type="submit">Log
                In</button>
            <%-- <h4 class="text-center">
                <a href="${contextPath}/registration">Create an account</a>
            </h4> --%>
        </div>
    </form>

Я пробовал много вещей, таких как изменение конфигурация cloudfront для использования только HTTP, только HTTPS, средства просмотра совпадений для связи с источником.

my Cloudfront Config в настоящее время:

введите описание изображения здесь

...