首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JBoss上的Picketlink将LogoutRequest发送到错误的端点

JBoss上的Picketlink将LogoutRequest发送到错误的端点
EN

Stack Overflow用户
提问于 2020-05-21 12:47:00
回答 1查看 68关注 0票数 0

我正在尝试使用picketlink保护应用程序。我使用的是JBoss 6.4.18。

SSO操作工作正常,没有任何问题。问题出在SLO,基本上,picketlink会将LogoutRequest断言发送到错误的端点。我的war中的IdP元数据具有以下端点:

代码语言:javascript
复制
<md:ArtifactResolutionService Binding="urn:oasis:names:tc:SAML:2.0:bindings:SOAP" Location="https://myidp.com/saml2/soap" index="0" isDefault="true"/>
<md:SingleLogoutService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="https://myidp.com/saml2/slo" ResponseLocation="https://myidp.com/saml2/slo_return"/>
<md:SingleLogoutService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect" Location="https://myidp.com/saml2/slo" ResponseLocation="https://myidp.com/saml2/slo_return"/>
<md:SingleLogoutService Binding="urn:oasis:names:tc:SAML:2.0:bindings:SOAP" Location="https://myidp.com/saml2/soap"/>
<md:ManageNameIDService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="https://myidp.com/saml2/rni" ResponseLocation="https://myidp.com/saml2/rni_return"/>
<md:ManageNameIDService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect" Location="https://myidp.com/saml2/rni" ResponseLocation="https://myidp.com/saml2/rni_return"/>
<md:ManageNameIDService Binding="urn:oasis:names:tc:SAML:2.0:bindings:SOAP" Location="https://myidp.com/saml2/soap"/>
<md:NameIDFormat>urn:oasis:names:tc:SAML:2.0:nameid-format:persistent</md:NameIDFormat>
<md:NameIDFormat>urn:oasis:names:tc:SAML:2.0:nameid-format:transient</md:NameIDFormat>
<md:SingleSignOnService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="https://myidp.com/saml2/sso"/>
<md:SingleSignOnService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect" Location="https://myidp.com/saml2/sso"/>
<md:NameIDMappingService Binding="urn:oasis:names:tc:SAML:2.0:bindings:SOAP" Location="https://myidp.com/saml2/soap"/>

LogoutRequest断言在我看来很不错,但是picketlink将其发送到/sso端点,而不是使用/slo (如元数据所示)。当idp收到该LogoutRequest时,它甚至不会将浏览器重定向回SP应用程序。

断言实际上具有正确的目的地,但正如我所说的,浏览器将发送到/sso端点。

代码语言:javascript
复制
<samlp:LogoutRequest xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol"
                 xmlns="urn:oasis:names:tc:SAML:2.0:assertion"
                 Destination="https://myidp.com/saml2/sso"

这是picketlink中的一个bug吗?我必须说,我已经使用其他IdP服务器配置了它,在这些服务器上,两种类型的断言的端点是相同的,在这种情况下,SLO工作得很好。

我很感谢你在这件事上的帮助。

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2020-07-02 09:05:17

最后,我不能通过配置来修复这个问题。人们可能希望picketlink将SLO断言发送到元数据文件中声明的端点,但正如我在上面的问题中描述的那样,它并不是这样的。

通过检查插件代码,我发现它可以读取请求参数来决定将注销请求断言发送到哪个端点。

因此,当SP请求GLO时,我添加另一个请求参数,如下所示:

代码语言:javascript
复制
/?GLO=true&picketlink.desired.idp="+encodedSLOEndpointURL

IdP读取该参数(picketlink.desired.idp)并将断言发送到picketlink端的该端点。

附言:我希望这是我最后一次处理像picketlink这样的旧库。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61927473

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档