ColdFusion / Шибболет — REMOTE_USER

У меня есть приложение ColdFusion, размещенное на моем сервере IIS. Я добавил службу Shibboleth в свой веб-IIS, а CGI/Filters настроены на его использование. Я добавил свое приложение в федерацию testshib и смог успешно войти в систему. Теперь я пытаюсь получить переменную сеанса в коде ColdFusion.

Когда я выгружаю область CGI, я вижу, что сеанс шибболета сохраняется под HTTP_COOKIE, но REMOTE_USER — это пустая строка. Это связано с тем, что REMOTE_USER нельзя использовать в соответствии с документами. Вместо этого переменная заголовка запроса должна называться HTTP_REMOTE_USER, но я не вижу этого в дампе CGI. Кто-нибудь, почему это? Должен ли я настраивать это в моей карте атрибутов shibboleth или в ColdFusion?

index.cfm

CGI dUMP
<cfdump var = "#cgi#" > 
<br>HTTP_REMOTE_USER
<cfdump var="#CGI.HTTP_REMOTE_USER#">
<br>Get Request
<cfset x = GetHttpRequestData()> 
<cfdump var="x">

Дамп результата

HTTP_COOKIE:_shibsession_64656487474733a2f2f6465736f6d2f73686962626f6c657468=_ecb60f7e4bf7616ab3522; 

Сессия

Miscellaneous
Session Expiration (barring inactivity): 479 minute(s)
Client Address: 224.61.30.228
SSO Protocol: urn:oasis:names:tc:SAML:2.0:protocol
Identity Provider: https://idp.testshib.org/idp/shibboleth
Authentication Time: 2017-11-30T14:48:48.255Z
Authentication Context Class: urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport
Authentication Context Decl: (none)

Attributes
affiliation: 2 value(s)
entitlement: 1 value(s)
eppn: 1 value(s)
persistent-id: 1 value(s)
unscoped-affiliation: 2 value(s)

person AJ_    schedule 30.11.2017    source источник


Ответы (1)


Я считаю, что ColdFusion не раскрывает все возможные переменные CGI в <cfdump>, а только самые распространенные. Это не означает, что вы не можете напрямую получить доступ к отсутствующим переменным CGI. Попробуйте изменить свой дамп, чтобы он был нацелен именно на тот, который вам нужен, например:

<cfdump var="#CGI.HTTP_REMOTE_USER#">

Если он все еще не записывается в область CGI, вы можете получить доступ к этой конкретной переменной заголовка запроса через запрос страницы, используя getHTTPRequestData().

person Carl Von Stetten    schedule 30.11.2017
comment
‹cfdump var=#CGI.HTTP_REMOTE_USER#› возвращает HTTP_REMOTE_USER : [пустая строка] . Вместе с getHTTPRequestData. Если я сброшу его через страницу asp, он отобразит HTTP_REMOTEUSER:[email protected]. - person AJ_; 30.11.2017
comment
Установка GetHttpRequestData в заголовки каким-то образом заставила его работать. Спасибо, я дам вам награду, когда она будет подходить через 2 дня. - person AJ_; 30.11.2017
comment
Похоже, что-то сбрасывается с разъема ColdFusion/IIS. Судя по этому сообщению в блоге, другие уже сталкивались с подобным поведением в прошлом: siteminder-redirect-unclassified" rel="nofollow noreferrer">grokbase.com/t/tomcat/users/128v2r7gf4/ - person Carl Von Stetten; 30.11.2017