У нас есть внутреннее приложение, развернутое на wildfly.Приложение предоставляет некоторые API REST и использует аутентификацию на основе форм (j_security_check
).У меня нет никакого доступа или контроля над этим приложением.
У меня есть угловой внешний интерфейс, который не будет развернут на том же хосте и порту, что и внутреннее приложение.Из Angular мне нужно получить доступ к некоторым API из серверной части.Но перед этим для получения файла cookie сеанса требуется аутентификация с помощью back-end.
Я понимаю, что это проблема CORS, и для ее работы необходимы изменения сервера.Я прошел по этой ссылке - https://www.html5rocks.com/en/tutorials/cors/.
В серверной части настройки Access-Control-Allow-Origin
и Access-Control-Allow-Credentials
не будут под моим контролем.В настоящее время сервер отправляет Access-Control-Allow-Origin :*
и не отправляет Access-Control-Allow-Credentials
.
Из Angular, есть ли способ решить эту проблему?Я могу получить внутреннюю страницу входа (содержит полный HTML-код с телом).
- Могу ли я отобразить эту HTML-страницу в формате Angular?
- После входа в систему как перенаправить надругой компонент?Это подход, о котором я думал, но не знаю, реально ли это возможно.
Пожалуйста, дайте мне знать, есть ли другой способ или что-то, чего я не понял здесь ни об Angular, ни о бэк-энде,Кстати, я новичок в Angular.
Для вызова внутренних API-интерфейсов я буду использовать это из Angular:
const httpOptions = {
withCredentials: true
};
Чтобы получить страницу входа из серверной части, я буду использовать это:
const httpOptions = {
headers: new HttpHeaders({
'Accept': 'text/html'
}),
observe: 'body' as 'body',
responseType: 'text' as 'text',
withCredentials: true,
};
this.http.get("path" + '/j_security_check', httpOptions).subscribe((html) =>
{
this.loginHTML = html
})