Shibboleth SP - 从 Java 中读取断言属性
Posted
技术标签:
【中文标题】Shibboleth SP - 从 Java 中读取断言属性【英文标题】:Shibboleth SP - Reading assertion attributes from Java 【发布时间】:2016-12-22 18:56:36 【问题描述】:我了解配置的属性将默认存储为环境变量,并且可以像这样访问
request.getAttribute("Shib-Identity-Provider")
我试过了,经过一番谷歌搜索后,我了解到可以通过 AJP 在 Java 中访问它们。
我需要添加前缀
<ApplicationDefaults id="default" policyId="default"
entityID="https://idp.example.org"
REMOTE_USER="eppn persistent-id targeted-id"
signing="false" encryption="false" attributePrefix="AJP_">
我这样做了,但我的 Java 应用程序仍然为 null
Shib-Identity-Provider - null Shib-Session-ID - 空 Shib-Application-ID - 空有人可以帮我弄清楚我缺少什么来使它工作吗?
【问题讨论】:
【参考方案1】:我可以得到标题中的值。对我来说,我在标签中添加的以下行工作
<Location /login >
AuthType Shibboleth
ShibRequireSession On
ShibUseHeaders On
require valid-user
</Location>
【讨论】:
【参考方案2】:确保您的属性映射文件中有此字段。
1.1 idP 也必须发送属性。
由于您的属性前缀为“AJP_”,因此您的属性将以“AJP_attributeName”的形式出现(这也可能有所不同)
2.1 您必须打开通常侦听 8009 的 AJP 端口并将 /secure 路径重定向到 AJP。您必须在 apache 中执行此操作才能将代理转发为 AJP。
2.2 在 /secure 路径的 servlet/handler 中,尝试获取属性为 request.getHeader("AJP_attrName")
。
(如果这不起作用,也可以尝试关注 a.reqest.getAttribute("attr")
b.reqest.getAttribute("AJP_attr")
c.header.getAttribute("attr")
c.header.getAttribute("AJP_attr")
。我告诉你试试这个,因为我很久以前就这样做了我不确定确切的方法。)
【讨论】:
我已经想通了。不过谢谢..我不打算使用标头来传递断言属性。我在阅读时不需要加上 AJP_ 前缀。我的所有其他配置都已到位。我只是错过了 apache 中的位置标记集。感谢您的回复和帮助。【参考方案3】:我错过了下面的配置
<Location /appname>
AuthType shibboleth
ShibRequestSetting requireSession 1
require valid-user
</Location>
供参考: https://wiki.surfnet.nl/display/surfconextdev/My+First+SP+-+Java
【讨论】:
用纯文本写文档的时候非常好。以上是关于Shibboleth SP - 从 Java 中读取断言属性的主要内容,如果未能解决你的问题,请参考以下文章
为了实施 SAML,我是不是需要在主机上安装 Shibboleth SP?
Shibboleth SP 是 SAML 2.0 的实现吗?
Shibboleth SSO 和 Spring SP:由于“InResponseToField”不匹配错误而无法登录
没有可用的 MetadataProvider - shibsp::ConfigurationException