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

WSO2单注销部分工作

邹齐智
2023-03-14

我正在使用WSO2身份服务器5.0.0测试SAML SSO,其中两个PHP应用程序实例作为服务提供者(使用onelogin phpsaml)。我设法使单点登录工作,但现在我面临单点注销的问题。

  1. 当我从PHPApp1触发注销请求时,WSO2 IDP以注销响应进行响应,它似乎工作正常
  2. WSO2 IDP触发对saml会话参与者的注销请求,在本例中是对PHPApp2的注销请求
  3. PHPApp2处理注销请求,并使用LogoutResponse重定向到WSO2 IDP注销url
  4. 现在的问题是:WSO2似乎无法处理来自PHPApp2的注销响应,并在日志中打印以下消息:

警告{org.wso2.carbon.identity.sso.saml.logout.LogoutRequestSender}-来自的单个注销响应失败http://php-app2.dev/saml/sls暂时移动状态代码{org.wso2.carbon.identity.sso.saml.logout.LogoutRequestSender}

之后,WSO2不断尝试向PHPApp2发送注销请求,结果显示以下消息

错误{org.wso2.carbon.identity.sso.saml.logout.LogoutRequest estSender}-重试5次后单次注销失败,时间间隔为60000毫秒。{org.wso2.carbon.identity.sso.saml.logout.LogoutRequest estSender}

我尝试在WSO2中启用调试日志以获取有关该问题的更详细信息,但我无法获得任何有用的信息。

有没有办法获得关于这个问题的更详细信息?

欢迎任何帮助。

共有3个答案

林哲茂
2023-03-14

WSO2 IS的工作原理是假设服务器可以相互查看和通信。这样,它会尽量保持礼貌,并通过反向通道(服务器到服务器,没有用户参与)发送注销请求。作为响应,SP应该发回有效的注销响应。WSO2 IS目前只检查HTTP状态代码(200)。

SimpleSAMLphp与用户浏览器配合使用(假设请求来自用户),在收到注销请求后,它尝试使用重定向绑定将用户重定向回IDP,并使用SAML响应。它正在发出HTTP 302响应。

尝试将SimpleSAMLphp配置为使用POST绑定进行注销(在saml20 idp remote.php中)。仍然-SimpleSAMLphp它可能会在返回带有注销响应的表单之前尝试重定向用户,WSO2不会遵循重定向。

加百列

潘泳
2023-03-14

问题是由于onelogin/php saml实现通过将响应重定向到IDP来处理IDP注销请求。

我更改代码以返回响应,它现在正在工作。考虑到我是SAML标准的新手,我不确定这是否是解决这个问题的正确方法。

东明德
2023-03-14

Michael,在SAML单注销实现中,当PHPApp1启动注销时,它将用户重定向到WSO2 IDP。然后WSO2 IDP验证LogoutRequest消息,在成功验证后,WSO2 IDP找出现有会话参与者(在这种情况下,WSO2 IDP将检测PHPApp2)。因此,在计算会话参与者之后,WSO2 IDP将以无状态方式(无浏览器参与)向那些人发送注销请求,会话参与者(PHPApp2)应验证来自WSO2 IDP的注销请求,并应将注销响应发回WSO2 IDP(无浏览器参与,无重定向)。WSO2 IDP从所有会话参与者接收到所有注销响应后,WSO2 IDP将其注销响应约定给启动器PHPApp1,这将作为浏览器重定向(HTTP表单提交)发送。

 类似资料:
  • 我正试图在我的java webapp中实现WSO2单点注销功能<我无法理解这件事: 然后我为第一个服务提供商(SP)调用注销,IdP使用SAML响应将其重定向到某个注销url,SP收到此请求并使超文本传输协议会话无效。 第二个SP也使用SAML响应从IdP获取请求,但此请求中的http会话是IdP和SP之间的会话,我需要使web浏览器和SP之间的会话无效。我如何获取此会话?

  • 我遇到的问题已经在这个网站上讨论过几次了,但是大多数帖子都很旧了。这与我的经历相似。我使用WSO2 IS 5.2作为我的IdP,我有两个基于java的Web应用程序托管在参与SSO的不同服务器上。每个webapp(SP)都实现了Spring-SAML扩展。单点登录完美,但单点注销仅部分有效。这是测试用例: 访问webapp1上的安全资源 显示来自Idp(WSO2)的登录页面,用户登录 提供来自we

  • 问题内容: 我正在考虑为我的应用程序使用OAuth2。我尝试实现的体系结构如下: 我将拥有自己的(仅此)授权服务器 一些资源应用程序使用授权服务器验证对资源的访问 某些客户端应用程序(网络,移动设备)会将用户重定向到授权服务器进行身份验证,如果成功,则会在资源应用程序上使用api。 到目前为止,我已经成功实现了3个基本应用程序(1个身份验证服务器,1个资源服务器和1个客户端)之间的交互。我无法正常

  • 我正在尝试Laravel5.2中的简单注销功能,但我真的不明白我错在哪里。如果有人能帮忙,那就太好了。 这是路线 loginController方法: 视图中使用此功能的链接: 会话存储代码: AuthController构造函数: 当用户单击注销链接时,它会重定向到根页面,但不会真正破坏会话或注销。它不需要登录来查看页面(它应该这样做)。

  • 我有一个注销功能,在另一个项目中工作,但由于某种原因,在我目前正在处理的项目中不工作。看起来它只是刷新了页面。我查了Symfony的官方留档https://symfony.com/doc/current/security.html但无济于事。希望你们能帮我。 更新:Security.yml: 控制器: 注销小枝: 编辑:我正在使用Symfony 3.4。当我进入页面 /logout它看起来像只是刷