Аутентификация в бэкэнд-сервисе с использованием аутентификации на основе форм из Angular. - PullRequest
0 голосов
/ 08 июля 2019

У нас есть внутреннее приложение, развернутое на 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-код с телом).

  1. Могу ли я отобразить эту HTML-страницу в формате Angular?
  2. После входа в систему как перенаправить надругой компонент?Это подход, о котором я думал, но не знаю, реально ли это возможно.

Пожалуйста, дайте мне знать, есть ли другой способ или что-то, чего я не понял здесь ни об 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
})
...