Базовая аутентификация при перенаправлении на внешний URL в JSF - PullRequest
0 голосов
/ 22 марта 2019

Как добавить базовую аутентификацию в запрос при перенаправлении на внешний URL в JSF.

Мне нужно загрузить отчет (предоставляемый SSRS в формате Excel) по нажатию кнопки из приложения JSF, URLдля отчета в формате -

http://report -сервер-хост / ReportServer / Pages / ReportViewer.aspx? имя_отчета & rs: Format = Excel

Я нашелспособ перенаправления на эту страницу из бэк-компонента с помощью FacesContext.

FacesContext.getCurrentInstance().getExternalContext().redirect(path); 

Но серверу отчетов нужна базовая аутентификация, как я могу добавить ее при выполнении этого перенаправления?

1 Ответ

0 голосов
/ 22 марта 2019

Вы можете добавить имя пользователя и пароль в самом URL, как это

http://username:password@report -server-хост / ReportServer / Страницы / ReportViewer.aspx REPORTNAME & RS: Формат = Excel


Чтобы преобразовать заголовок обычной аутентификации в имя пользователя: в формате пароля используйте декодер Base64.

Если заголовок имеет вид, подобный Basic {TOKEN}, где {TOKEN} - строка в кодировке Base64 (что-то вроде dXNlcm5hbWU6cGFzc3dvcmQ=), то URL перенаправления должен быть

  String auth = new String(Base64.getDecoder().decode(TOKEN));

  path = path.replaceFirst("://", "://" + auth + "@");

  FacesContext.getCurrentInstance().getExternalContext().redirect(path);

Поскольку у меня нет репутации, чтобы комментировать, я отвечаю на ваш комментарий здесь. Часть username:password@ не требует экранирования URL.

...