我知道配置的属性默认情况下将作为环境变量存储,并且可以像
那样访问。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
- ship - identity - provider - null
- Shib-Session-ID - null
- Shib-Application-ID - null
有人能帮我弄清楚我错过了什么使它工作吗?
-
确保你的属性映射文件中有这个字段
1.1并且idP也要发送属性
-
由于您的属性前缀为"AJP_",您的属性将以"AJP_attributeName"的形式出现(这也可能有所不同)
你必须打开你的AJP端口,通常监听8009和重定向/安全路径到AJP。您必须在apache中这样做才能将代理作为AJP转发。2.2在/secure path的servlet/handler中尝试获取属性为
request.getHeader("AJP_attrName")
。(如果这不起作用,也可以尝试以下a.
reqest.getAttribute("attr")
b.reqest.getAttribute("AJP_attr")
c.header.getAttribute("attr")
c.header.getAttribute("AJP_attr")
。我告诉你尝试一下,因为我很久以前就这样做了,我不确定确切的方法。
我错过了下面的配置
<Location /appname>
AuthType shibboleth
ShibRequestSetting requireSession 1
require valid-user
</Location>
供参考:https://wiki.surfnet.nl/display/surfconextdev/My +第一+ SP +——+ Java
我可以在header中获得值。对我来说,下面的行可以工作,我添加了标签
<Location /login >
AuthType Shibboleth
ShibRequireSession On
ShibUseHeaders On
require valid-user
</Location>