Shibboleth SP - 从 Java 中读取断言属性
Shibboleth SP - Reading assertion attributes from Java
我知道默认情况下配置的属性将存储为环境变量,并且可以像
一样访问
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 应用程序中仍然出现空值
- Shib-Identity-Provider - 空
- Shib-Session-ID - 空
- Shib-Application-ID - 空
有人可以帮我弄清楚我缺少什么来让它工作吗?
我错过了下面的配置
<Location /appname>
AuthType shibboleth
ShibRequestSetting requireSession 1
require valid-user
</Location>
供参考:
https://wiki.surfnet.nl/display/surfconextdev/My+First+SP+-+Java
确保您的属性映射文件中有此字段。
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")
。我告诉你试试解决这个问题是因为我很久以前就做过了,我不确定具体的方法。)
我可以获得 Headers 中的值。对我来说,我在 tag
中添加了以下行
<Location /login >
AuthType Shibboleth
ShibRequireSession On
ShibUseHeaders On
require valid-user
</Location>
我知道默认情况下配置的属性将存储为环境变量,并且可以像
一样访问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 应用程序中仍然出现空值
- Shib-Identity-Provider - 空
- Shib-Session-ID - 空
- Shib-Application-ID - 空
有人可以帮我弄清楚我缺少什么来让它工作吗?
我错过了下面的配置
<Location /appname>
AuthType shibboleth
ShibRequestSetting requireSession 1
require valid-user
</Location>
供参考: https://wiki.surfnet.nl/display/surfconextdev/My+First+SP+-+Java
确保您的属性映射文件中有此字段。
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")
。我告诉你试试解决这个问题是因为我很久以前就做过了,我不确定具体的方法。)
我可以获得 Headers 中的值。对我来说,我在 tag
中添加了以下行<Location /login >
AuthType Shibboleth
ShibRequireSession On
ShibUseHeaders On
require valid-user
</Location>