2016-11-27 3 views
1

Я пытаюсь реализовать аутентификацию для веб-портала, который я разрабатываю Ruby on Rails (т. Е. Я хотел бы защитить определенные страницы для доступа администратора). Он защищен Shibboleth, и у меня есть база данных для пользователей (для информации, которую я не получаю от Shibboleth). Сервер работает под управлением Phusion пассажир на apache2.4Использование атрибутов Shibboleth в качестве переменных среды Ruby (Phusion Passenger)

У меня есть два вопроса:

  • путь я планирую осуществить это с помощью if-другого условия. Я возьму атрибут от Shibboleth, соответствующий ему, с помощью ключа моей пользовательской базы данных, чтобы идентифицировать пользователей. Если это админ, я покажу контент, специфичный для администраторов. Есть ли более эффективная реализация?

    • Как установить переменные среды на рубине, переданные Shibboleth? И как я могу использовать их на странице HTML для реализации if-else выше?

Позвольте мне знать, если требуется дополнительная информация.

+0

Просьба пояснить, что вы подразумеваете под «Как установить переменные среды на рубине, переданные Shibboleth?». – rlandster

+0

@rlandster из того, что я собираю, вы можете установить атрибуты, которые ваша система получает от shibboleth в атрибуте map.xml. Я хочу надежно использовать эти атрибуты в моем приложении RoR (желательно не как HttpHeader). Как мне это сделать? – newtojs

ответ

0

Ваша идея проверки аутентифицированного имени пользователя, переданного через SAML, со списком администраторов будет работать.

Вы не устанавливаете переменные среды явно, а программное обеспечение Shibboleth (обычно shibd вместе с Apache mod_shib) устанавливает переменные среды. Файл attribute-map.xml в программном обеспечении Shibboleth SP отображает атрибут, переданный ответом SAML, в переменную среды (или в заголовок HTTP-запроса).

Ниже приведен пример фрагмент:

# /etc/shibboleth/attribute-map.xml 
<Attributes xmlns="urn:mace:shibboleth:2.0:attribute-map" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
    <Attribute name="urn:mace:dir:attribute-def:eduPersonPrincipalName" id="eppn"> 
    <AttributeDecoder xsi:type="ScopedAttributeDecoder"/> 
    </Attribute> 
</Attributes> 

Вышеописанный имеет атрибут в ответ SAML с именем urn:mace:dir:attribute-def:eduPersonPrincipalName и отображает его в переменное окружении eppn. Если не указано иное, Apache передаст эту переменную среды в ваше приложение Rails.

Дополнительную информацию см. На странице документации Консорциума Shibboleth NativeSPConfiguration.

+0

Это было мое понимание. Спасибо @rlandster, что отвечает на большинство моих вопросов. Я действительно хочу понять, как/где я буду проверять имена пользователей SAML? В конечном счете, я хочу ограничить доступ к элементам на моем представлении, которые могут быть сделаны либо на странице, либо с помощью специальных страниц администратора (по сути, это то же самое, что и пользовательские страницы, с несколькими дополнительными кнопками). Как я могу использовать среду в своем приложении для реализации этого if-else – newtojs

Смежные вопросы