ColdFusion / Shibboleth - REMOTE_USER

时间:2017-11-30 15:38:11

标签: iis coldfusion cgi saml shibboleth

我的IIS服务器上托管了一个ColdFusion应用程序。我将Shibboleth服务添加到我的Web IIS,并设置了CGI / Filters以使用它。我将我的应用程序添加到testshib联合,并且能够成功登录。现在我正在尝试将会话变量放入ColdFusion代码中。

当我转储CGI范围时,我看到shibboleth会话保存在HTTP_COOKIE下,但REMOTE_USER是一个空字符串。这是因为根据docs无法使用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)

1 个答案:

答案 0 :(得分:4)

我相信ColdFusion并没有公开<cfdump>中每个可能的CGI变量,只有最常见的变量。这并不意味着您无法直接访问看似缺少CGI变量的内容。尝试更改转储以专门针对您需要的转储,例如:

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

如果仍未将其写入CGI范围,您可以使用getHTTPRequestData()通过页面请求访问该特定请求标头变量。