从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应用程序仍然得到null

  • ship - identity - provider - null
  • Shib-Session-ID - null
  • Shib-Application-ID - null

有人能帮我弄清楚我错过了什么使它工作吗?

  1. 确保你的属性映射文件中有这个字段

    1.1并且idP也要发送属性

  2. 由于您的属性前缀为"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>

最新更新