我的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)
答案 0 :(得分:4)
我相信ColdFusion并没有公开<cfdump>
中每个可能的CGI变量,只有最常见的变量。这并不意味着您无法直接访问看似缺少CGI变量的内容。尝试更改转储以专门针对您需要的转储,例如:
<cfdump var="#CGI.HTTP_REMOTE_USER#">
如果仍未将其写入CGI范围,您可以使用getHTTPRequestData()
通过页面请求访问该特定请求标头变量。