Получить пользовательские атрибуты из Shibboleth SP (лучшие практики) - PullRequest
0 голосов
/ 26 октября 2018

У меня есть поставщик услуг shibboleth с Apache httpd , и идентификатор отправляется мне с атрибутами.

Итак, я могу получить пользовательские атрибуты из https://mysp/Shibboleth/Session,, и все, что мне нужно, это отправить запрос из интерфейса ( ReactJs ) по этой ссылке и получить все атрибуты. .

Теперь мы входим в производственную среду, но этот способ извлечения атрибутов из сеанса не рекомендуется для рабочей среды.

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

Заранее спасибо

Ответы [ 2 ]

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

После моего поиска и получения справки от @Kellen Murphy, лучшее решение для предотвращения подмены - это использовать переменные env.

Например, я хочу отправить в мои приложения атрибут USERNAME.

Итак, я создал страницу php, которая может читать данные сеанса из заголовка

<html>
 <head>
  <title>Session data</title>
 </head>
 <body>
<?php
print_r($_SERVER["HTTP_X_USERNAME"]);
?>
 </body>
</html>

Затем я запустил страницу php с

php -S localhost: 9000

Затем я передал переменную env в качестве переменной заголовка

    RequestHeader set X-USERNAME      %{USERNAME}e
    ProxyPass /Session http://localhost:9000
    ProxyPassReverse  /Session http://localhost:9000

Теперь я могу получить свои атрибуты, атаковав страницу: https://example.com/Session

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

Вы не можете получить доступ к атрибуту напрямую со стороны клиента. Должен быть какой-то серверный код. См. Как получить доступ к атрибутам Shibboleth SP в приложении AngularJS для аналогичного запроса с AngularJS.

Shibboleth SP предоставляет атрибуты как переменные сервера, и к ним можно получить доступ только из кода на стороне сервера, см .: Доступ к атрибутам поставщика услуг Shibboleth 3.x (Кроме того, устаревший, но все еще широко развертывание NativeSPAttributeAccess для SP v2.x ).

Вы также можете разрешить Shibboleth предоставлять данные атрибута, используя заголовки HTTP-запроса через ShibUseHeaders On в вашей конфигурации Apache.

Если вы используете сервер Node.js, вы можете рассмотреть что-то отличное , чем Shibboleth, в качестве поставщика услуг SAML, т.е. saml2-js .

...