Oauth 2.0 PingFederate授权管理页面未使用全局HTML表单IdP适配器终结点注销

Oauth 2.0 PingFederate授权管理页面未使用全局HTML表单IdP适配器终结点注销,oauth-2.0,adapter,openid,pingfederate,Oauth 2.0,Adapter,Openid,Pingfederate,我正在使用带有OpenID连接的PingFederate。我在从赠款管理页面注销时遇到问题 我将IdP适配器会话状态设置配置为全局。因此,如果我使用其中一个注销端点,我将成功地从所有其他RPs注销 注销后,如果我试图通过这个端点获取授权管理页面,~/as/grants.oauth2,则会提示登录页面,以便SLO正常工作。但是当我转到另一个端点时,~/as/oauth\u access\u grants.ping我可以在不登录的情况下获取页面。所以,您知道为什么全局HTML表单IdP适配器注销端点

我正在使用带有OpenID连接的PingFederate。我在从赠款管理页面注销时遇到问题

我将IdP适配器会话状态设置配置为全局。因此,如果我使用其中一个注销端点,我将成功地从所有其他RPs注销

注销后,如果我试图通过这个端点获取授权管理页面,~/as/grants.oauth2,则会提示登录页面,以便SLO正常工作。但是当我转到另一个端点时,~/as/oauth\u access\u grants.ping我可以在不登录的情况下获取页面。所以,您知道为什么全局HTML表单IdP适配器注销端点不让我从该端点注销,而让我从其他端点注销吗

我正在使用适配器上定义的端点

我有层次适配器。父适配器保存全局设置并设置为默认设置。孩子们在会话设置上也接受全局设置

因此,当我调用其中一个适配器的端点(共享全局设置的端点)时,所有具有全局设置的会话都将从会话映射中删除。因此,一种选择性SLO正在发生

我检查了服务器日志,每个全局设置的适配器都将其会话作为HtmlFormIdpAuthnAdapter:SESSION添加到状态映射中

org.sourceid.saml20.service.impl.localmemory.interreqstatemgmtmtmtmapimpl]getAttr(键:GEZIxxzzgrJ1Wq0vFoSY09,名称:htmlformipauthnadapter:SESSION

即使是授权管理页面。(~/as/grants.oauth2)。但是另一个授权管理端点将其会话作为name:attrs和name:csrfToken放入状态映射

[org.sourceid.saml20.service.impl.localmemory.interreqstatemgmtmtpimpl]getAttr(关键字:GEZIxxzzgrJ1Wq0vFoSY09,名称:attrs)2016-02-18 08:30:39404 tid:b4ryqAPIEA6R0ywXzVmC6XtykHc调试[org.sourceid.saml20.service.impl.localmemory.interreqstatemgmtmtmtpl]getAttr(关键字:GEZIxxzzgrJ1Wq0vFoSY09,名称:rfcstoken)

因此,基本上,当我通过适配器端点撤销会话时,它会删除所有htmlformidauthnadapter:session值

removeAttr(关键字:GEZIxxzzgrJ1Wq0vFoSY09,名称:HtmlFormIdpAuthnAdapter:SESSION)2016-02-18 08:27:35407调试[com.pingidentity.jgroups.muxiNotationHandler]调用removeA ttr对IntereqStateMtmMapImpl状态映射大小:11个属性映射大小9 2016-02-18 08:27:35409 tid:B4RyQapiea6R0YWxZVMC6YKHC调试[org.sourceid.saml20.service.impl.grou prpc.InterRequestStateMgmtGroupRpcImpl]调用的模式:在[10.0.12.90:7600,10.0.12.126:7600]上获取多数removeAttr()

但是添加的仍然保留。因此我可以从该端点获取授权管理页面,但另一个端点需要登录

我还尝试了idp/startSLO.ping注销端点

只有当我在该会话上获得访问令牌时,它才会工作并撤销所有会话(即使是最后一个会话)

否则,如果我直接登录到授权管理页面并调用idp/startSLO.ping,我会从服务器收到一个错误

*###Server1####2016-02-18 08:31:34705 tid:b4ryqAPIEA6R0ywXzVmC6XtykHc调试[org.sourceid.webso.servlet.IntegrationControllerServlet]GET:2016-02-18 08:31:34705 tid:b4ryqAPIEA6R0ywXzVmC6XtykHc调试[org.sourceid.saml20.service.impl.grouprpc.PreferredNodes][]->地址索引->[10.0.12.90:7600,10.12.126:7600]2016-02-18 08:31:34708调试[org.sourceid.saml20.service.impl.localmemory.IdpSessionRegistryMapImpl]getRegistered(3AeDfSHVS1F0JU4nwgLsPJ)发现空的authn bean 2016-02-18 08:31:34708调试[com.pingidentity.jgroups.muxinovationHandler]在org.sourceid.saml20.service.impl.localmemory上调用getRegistered。IdpSessionRegistryMapImpl@e599115{bean->sessionlist=0,assertionId->bean=0,pfsessionid->beanSets=6}2016-02-18 08:31:34708 tid:b4ryqAPIEA6R0ywXzVmC6XtykHc调试[org.sourceid.saml20.service.impl.grouprpc.IdpSessionRegistryGroupRpcImpl][10.0.12.90:7600,10.0.12.126:7600]2016-02-18 08:31:34709 tid:b4ryqAPIEA6R0ywXzVmC6XtykHc DEBUG[org.sourceid.saml20.bindings.BindingServiceImpl]上的调用模式:GET_MAJORITY getRegistered()未传输协议请求消息,因为HTTP响应已提交(这是一种正常情况,通常是由于适配器或其他组件重定向用户或将其自己的内容写入响应)

服务器2 2016-02-18 08:31:34706调试[org.sourceid.saml20.service.impl.localmemory.IdpSessionRegistryMapImpl]getRegistered(3AeDfSHVS1F0JU4nwgLsPJ)发现空的authn bean 2016-02-18 08:31:34707调试[com.pingidentity.jgroups.muxin]在org.sourceid.saml20.service.impl.localmemory上调用getRegistered。IdpSessionRegistryMapImpl@dec9571{bean->sessionlist=0,assertionId->bean=0,pfsessionid->beanSets=6}*

和跟踪注销的用户会话,并在注销时撤消用户会话


基本上,我需要找到一种方法,使我的授权管理页面仅使用defaulthtmlform idp适配器。

我假设您正在使用/idp/startSLO.ping端点进行注销?(而不是仅在适配器上定义的注销端点?)

我相信我能够重现您看到的内容。我怀疑您在OAuth授权服务器设置中启用了“跟踪用户会话以便注销”(异步前端通道注销机制()的一部分),但您没有“注销时撤销用户会话”(服务器端跟踪的一部分)


尝试启用“注销时撤消用户会话”,看看这是否解决了问题。

我假设您正在使用/idp/startSLO.ping端点进行注销?(而不是仅在适配器上定义的注销端点?)

我相信我能够重现您看到的内容。我怀疑您在OAuth授权服务器设置(异步前端通道注销机制()的一部分)中启用了“跟踪用户会话以便注销”,但您没有“注销时撤消用户会话”(第二部分)