Coldfusion 2021与IIS环境下Shibboleth变量无法获取问题
我用Shibboleth 3作为服务提供商(SP),Azure AD作为身份提供商(IDP),从Shibboleth交易日志来看认证已成功完成:
2022-12-16 12:35:54|Shibboleth-TRANSACTION.AuthnRequest|||https://sts.windows.net/c04845f0-4224-4637-aed2-9beea8319b5b/||||||urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect||||||
2022-12-16 12:35:55|Shibboleth-TRANSACTION.Login||_292e2cf9f81890bcdf7ffe1cd147c92f|https://sts.windows.net/c04845f0-4224-4637-aed2-9beea8319b5b/|_ff1422a3-4c91-4255-adec-fa6fd52d2600|urn:oasis:names:tc:SAML:2.0:ac:classes:Password|2022-12-16T07:00:19|authnmethodsreferences(2),displayname(1),emailaddress(1),givenname(1),groups(1),identityprovider(1),objectidentifier(1),surname(1),tenantid(1)|davisg1@XXXXX.com|urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST||urn:oasis:names:tc:SAML:2.0:status:Success|||Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36 Edg/108.0.1462.46|167.244.201.154
注:出于隐私考虑,邮箱已修改为"davisg1@XXXXX.com"。
但我在ColdFusion页面里无法获取到相关变量,试过各种方法都没解决:
- 输出
cgi和getHTTPRequestData()的内容 - 硬编码调用
#cgi['http_givenName']#、#cgi['HTTP_REMOTE_USER']#等
均未得到有效数据。
我已经更新了attributes-map.xml,配置Azure AD返回的"name"字段:
<Attribute name="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name" id="persistent-id"> <AttributeDecoder xsi:type="NameIDAttributeDecoder" formatter="$NameQualifier!$SPNameQualifier!$Name" defaultQualifiers="true"/> </Attribute>
同时在shibboleth.xml的ApplicationDefaults中配置了REMOTE_USER使用persistentID:
<ApplicationDefaults entityID="https://intranettest.amc.edu/shibboleth-sp" REMOTE_USER="eppn subject-id pairwise-id persistent-id" cipherSuites="DEFAULT:!EXP:!LOW:!aNULL:!eNULL:!DES:!IDEA:!SEED:!RC4:!3DES:!kRSA:!SSLv2:!SSLv3:!TLSv1:!TLSv1.1">
内容的提问来源于stack exchange,提问作者gabriel

