当前位置: 首页 > 知识库问答 >
问题:

带有OPENAM的Spring Security SAML扩展

田佐
2023-03-14

下面是场景。

我有我的网络应用程序

所以这里的IDP Prxy是:http://idpproxydev.devs1.int:8080/openam

国内流离失所者网址是:http://idpdev.devs1.int:80/openam

我的网络应用程序是:http://ocr-jq0zt91.devs1.int:9081/LOS

我开始使用 http://static.springsource.org/spring-security/site/extensions/saml/index.html 进行集成,现在我看到SAML:从我的Web应用程序发送请求。

我现在遇到的问题是,当我使用Fedlet(在IDP代理上使用Openam生成的客户端)测试我的设置时,请求转到代理,然后被路由到IDP,因为Fedlet生成的SAML请求具有该附加信息,这是SAML请求中的这个片段

<samlp:Scoping xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol"  ProxyCount="1"   >
       <samlp:IDPList xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol">
        <samlp:IDPEntry xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol"
                        ProviderID="http://idpdev.devs1.int:80/openam"  />
    </samlp:IDPList>
</samlp:Scoping>

因此,我看到的唯一区别是FEEDLET生成的SAML请求中的额外付费负载。

因此,通过在SAML请求中看到上述片段,IDP代理知道最终目的地不是它自己(http://idpproxydev.devs1.int:8080/openam)而是另一个实体http://idpdev.devs1.int:80/openam

Fedlet有扩展元数据的附加属性文件(sp-extended.xml),我们可以在其中添加这些附加内容。

<Attribute name="enableIDPProxy">
           <Value>true</Value>
       </Attribute>
       <Attribute name="idpProxyList">
           <Value> http://idpdev.devs1.int:80/openam</Value>  (the attribute name is little confusing as this is the IDP)
       </Attribute>
       <Attribute name="idpProxyCount">
           <Value>1</Value>
       </Attribute>

然而,在spring saml安全库中,我看不到任何可以添加这些附加属性的方法,因此saml请求可以包含这些信息。有什么方法可以添加上面列出的附加属性吗?

以便spring saml扩展可以在我的web应用程序发送请求时读取?

共有1个答案

柳威
2023-03-14

我找到了解决此问题的方法。您需要使用org.springframework.security.saml.websso.WebSSOProfileOptions

以下是我的web应用程序中的一个示例。将其添加到security.xml中

<beans:bean id="samlEntryPoint" class="org.springframework.security.saml.SAMLEntryPoint">
        <beans:property name="defaultProfileOptions">
            <beans:bean class="org.springframework.security.saml.websso.WebSSOProfileOptions">
                <beans:property name="binding" value="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST"/>
                <beans:property name="includeScoping" value="true"/>
                <!-- to skip proxyCount, 0 to disable proxying, >0 to allow proxying-->
                <beans:property name="proxyCount" value="1"/>
                <beans:property name="allowedIDPs">
                    <beans:set>
     <beans:value>http://idpproxydev.devs1.int:80/openam</beans:value>                  
                    </beans:set>
               </beans:property>        
  <!--  Allowed Values are in  AuthnContextComparison.java -->
            <beans:property name="authnContextComparison" value="EXACT"/>
            <beans:property name="authnContexts">
                    <beans:list>
 <beans:value>
urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport
</beans:value>                  
                    </beans:list>
            </beans:property>
            <beans:property name="nameID" value="urn:oasis:names:tc:SAML:2.0:nameid-  format:transient"/>
            <beans:property name="allowCreate" value="true"/>
                </beans:bean>
        </beans:property>
    </beans:bean>

现在,我看到来自WEB app的SAML请求包含IDP列表。

还添加了一些附加说明,以使用SPRING SAML扩展将JSF web应用程序与openam集成。

请参阅我关于Openam概念相关通用信息的文章http://reddymails.blogspot.com/2013/03/sso-for-java-or-net-web-based.html

使用Spring SAML扩展和Spring Security将JSF 2 web应用程序与Openam集成的步骤。http://Reddy mail s . blogspot . com/2013/06/integrating-JSF-we B- applicati on-with . html

-拉玛

 类似资料:
  • OpenAM 是一个领先的开源认证、授权的产品,可用于替换即将被取消的 OpenSSO。 OpenAM 提供核心的标识服务用来简化实现在一个网络架构中的透明单点登录,包括集中式或者分布式的单点登录。主要的特性有: 完全符合开源AAA产品; AAA协议:计算机安全领域的协议,AAA指:鉴权,授权,计费(Authentication, Authorization, Accounting) 简单易用、易

  • 设置: 我安装了Postresql(11.10版)和TimescaleDB(1.7.1版)扩展。我有2个表,我想用安装在Kafka Connect上的Debezium(ver1.3.1)连接器监视它们,目的是CDC(捕获数据更改)。 表是table1和table2hyper,但table2hyper是hypertable。 在Kafka Connect中创建Debezium连接器后,我可以看到创建

  • 我有个小问题。我做了一个生成jtable的程序,比你可以用一些值填充这个表,比把整个表保存到Excel。 在乞讨开始时,我定义了file: 当我打开这个文件时,我得到消息,文件的格式与其扩展名(.xls)不同。所以我点击“另存为”,建议的扩展名是。txt。我将文件保存为。xls(似乎与java程序保存的文件相同),并且我可以将JTable从excel导入java程序,而不会出现任何错误。谁能建议如

  • 问题内容: 我想用PHP包装CSS文件…因此,我为CSS文件编写了标头,并给了它一个.php文件扩展名,因此… css.php。 如果该页面已被用作包含内容,是否可以使用?还是这个新标题与页面所包含的框架冲突? 问题答案: 加纳夫钉牢了它。 我做: 然后在您的.css.php文件顶部:

  • 在一个同时使用静态编程语言和java的Android项目中,我想在一些java文件中使用静态编程语言函数和。 所以我想到了使用扩展。我做了下面的工作, 然而,我曾考虑将分隔符作为参数传递,但在java中尝试使用“删除第二个参数…”时,它给了我一个错误 方法正确吗?能做到吗?