использование c # для доступа к данным сеанса shibboleth

#c# #iis-6 #shibboleth

#c# #iis-6 #shibboleth

Вопрос:

Я успешно установил Shibboleth SP на наш сервер (server 2003 IIS6), и он работает со сторонним IDP. Я знаю, что это работает, поскольку значение /Session возвращает нужные мне атрибуты.

На данный момент я не могу получить доступ к этим переменным сеанса из приложения .net. переменные не помещаются в head.

Любая помощь с благодарностью.

—Обновить — В attribute-map.xml У меня есть следующее, связанное с нужным мне атрибутом (принадлежность)

 <Attribute name="urn:mace:dir:attribute-def:eduPersonScopedAffiliation" id="affiliation" aliases="Shib-EP-Affiliation">
    <AttributeDecoder xsi:type="ScopedAttributeDecoder" caseSensitive="false"/>
</Attribute>
<Attribute name="urn:oid:1.3.6.1.4.1.5923.1.1.1.9" id="affiliation" aliases="Shib-EP-Affiliation">
    <AttributeDecoder xsi:type="ScopedAttributeDecoder" caseSensitive="false"/>
</Attribute>
  

Есть ли что-то дополнительное, что я должен добавить сюда?

Ответ №1:

Насколько я помню, атрибуты должны быть доступны в Request.ServerVariables коллекции или Request.Headers с ключами, которые вы указываете в своем Attribute-Map.xml конфигурация. Однако имейте в виду, что при использовании IIS и ASP.NET при этом они, как правило, получают префикс, добавляемый к настроенным вами именам, и некоторые другие вещи, которые также происходят. Самый надежный подход к выяснению фактических значений ключей — запустить тестовую страницу, которая перебирает содержимое коллекции ServerVariables or Headers и отображает их.

Комментарии:

1. Я просмотрел обе эти коллекции и не вижу связанной с shibboleth переменной :(. Я добавил информацию о attibute-map.xml выше.

2. Сама конфигурация Shibboleth несколько выходит за рамки исходного вопроса, поскольку вы спросили, как получить доступ к атрибутам в asp.net приложение. Тем не менее, я могу сказать, что по опыту очень легко получить неправильную конфигурацию Shibboleth, и проблема может быть даже в другом месте, кроме Attibute-Map.xml досье. Я бы посоветовал вам включить наиболее подробный уровень ведения журнала в shibd. logger, перезапустите демон и просмотрите журнал, чтобы узнать, какие атрибуты поступают и сопоставляются при аутентификации и перенаправлении. Однако группа Shibboleth Google была бы лучшим местом для вопросов о конфигурации.

3. У меня была неправильно настроена конфигурация, поэтому она работала, но не там, где я ожидал.

Ответ №2:

Вам понадобится IIS для передачи заголовков Shibb вашему приложению — см. Описание здесь: https://spaces.ais.ucla.edu/display/iamucla/InstallShibSPOnWindowsIIS

Ответ №3:

У меня была такая же проблема, и в конце концов я обнаружил проблему в своем shibboleth2.xml .

В моем <Host> элементе мне не хватало authType="shibboleth" атрибута. Мое приложение смогло декодировать запросы SAML, и я мог видеть свои атрибуты /Shibboleth.sso/Session , но атрибуты не заполняли переменные среды или заголовки. Как только я добавил authType атрибут, все встало на свои места.

Кроме того, было очень полезно создать .aspx страницу, содержащую только

 <% @ Page Language="C#" Trace="true" %>
  

во время поиска атрибутов Shibboleth.

Ответ №4:

Я столкнулся с аналогичной проблемой, и оказалось, что мой <Host> элемент в shibboleth2.xml файле указывал путь, который был недопустим для того места, где я тестировал. Если я посещал URL-адрес под путем, заголовки были доступны.

Обновление атрибута ‘path’ до допустимого пути для сайта решило эту проблему для меня.