Ping Federate Grant Management Page不会使用全局htmlform idp适配器端点

时间:2016-02-16 17:51:22

标签: adapter openid pingfederate oauth2

我正在使用Pingfederate和openid connect。从授权管理页面注销时遇到问题。

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

注销后,如果我尝试通过此端点〜/ as / grants.oauth2 获取授权管理页面,则会提示登录页面,以便SLO正常工作。但是,当我去另一个端点〜/ as / oauth_access_grants.ping 时,我可以在不登录的情况下获取该页面。那么,您有什么想法,为什么全局htmlformidpadapter注销端点不会让我退出从该端点并从其他端点注销?

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

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

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

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

org.sourceid.saml20.service.impl.localmemory.InterReqStateMgmtMapImpl] getAttr(key:GEZIxxzzgrJ1Wq0vFoSY09,name:HtmlFormIdpAuthnAdapter:SESSION

甚至授予管理页面。(〜/ as / grants.oauth2)。但是其他授权管理端点将其会话作为名称放在状态映射中:attrs和name:csrfToken。

[org.sourceid.saml20.service.impl.localmemory.InterReqStateMgmtMapImpl] getAttr(key:GEZIxxzzgrJ1Wq0vFoSY09,name:attrs)2016-02-18 08:30:39,404 tid:b4ryqAPIEA6R0ywXzVmC6XtykHc DEBUG [org.sourceid.saml20.service .impl.localmemory.InterReqStateMgmtMapImpl] getAttr(key:GEZIxxzzgrJ1Wq0vFoSY09,name:csrfToken)

所以基本上当我通过适配器端点撤销会话时,它会删除所有HtmlFormIdpAuthnAdapter:SESSION值。

removeAttr(key:GEZIxxzzgrJ1Wq0vFoSY09,name:HtmlFormIdpAuthnAdapter:SESSION)2016-02-18 08:27:35,407 DEBUG [com.pingidentity.jgroups.MuxInvocationHandler]调用interReqStateMgmtMapImpl上的removeA ttr状态映射大小:11个属性map size9 2016 -02-18 08:27:35,409 tid:b4ryqAPIEA6R0ywXzVmC6XtykHc DEBUG [org.sourceid.saml20.service.impl.grou prpc.InterRequestStateMgmtGroupRpcImpl]调用mode:GET_MAJORITY removeAttr()on [10.0.12.90:7600,1 0.0.12.126:7600 ]

https://localhost:9031/as/oauth_access_grants.ping添加的内容仍然存在。所以我可以从这个端点获得授权管理页面,但另一个端点需要登录。

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

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

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

* ### Server1 ### 2016-02-18 08:31:34,705 tid:b4ryqAPIEA6R0ywXzVmC6XtykHc DEBUG [org.sourceid.websso.servlet.IntegrationControllerServlet] GET:https://localhost:9031/idp/startSLO.ping 2016-02-18 08: 31:34,705 tid:b4ryqAPIEA6R0ywXzVmC6XtykHc DEBUG [org.sourceid.saml20.service.impl.grouprpc.PreferredNodes] [] - >地址索引 - > [10.0.12.90:7600,10.0.12.126:7600] 2016-02-18 08:31:34,708 DEBUG [org.sourceid.saml20.service.impl.localmemory.IdpSessionRegistryMapImpl] getRegistered(3AeDfSHVS1F0JU4nwgLsPJ)found null authn beans 2016-02 -18 08:31:34,708 DEBUG [com.pingidentity.jgroups.MuxInvocationHandler]在org.sourceid.saml20.service.impl.localmemory.IdpSessionRegistryMapImpl@e599115上调用getRegistered {bean-> sessionLists = 0,assertionId-> bean = 0,pfsessionid-> beanSets = 6} 2016-02-18 08:31:34,708 tid:b4ryqAPIEA6R0ywXzVmC6XtykHc DEBUG [org.sourceid.saml20.service.impl.grouprpc.IdpSessionRegistryGroupRpcImpl]调用模式:GET_MAJORITY getRegistered()on [10.0 .12.90:7600,10.0.12.126:7600] 2016-02-18 08:31:34,709 tid:b4ryqAPIEA6R0ywXzVmC6XtykHc DEBUG [org.sourceid.saml20.bindings.BindingServiceImpl]由于HTTP响应已提交,因此未传输协议请求消息(此通常是由于适配器或其他组件重定向用户或编写自己的内容而导致的正常情况响应)。

SERVER2 2016-02-18 08:31:34,706 DEBUG [org.sourceid.saml20.service.impl.localmemory.IdpSessionRegistryMapImpl] getRegistered(3AeDfSHVS1F0JU4nwgLsPJ)找到null authn beans 2016-02-18 08:31:34,707 DEBUG [com.pingidentity。 jgroups.MuxInvocationHandler]在org.sourceid.saml20.service.impl.localmemory.IdpSessionRegistryMapImpl@dec9571上调用getRegistered {bean-&gt; sessionLists = 0,assertionId-&gt; bean = 0,pfsessionid-&gt; beanSets = 6} * < / p>

还启用了用于LOGOUT的LOGOUT和REVOKE用户会话的TRACK用户会话。

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

1 个答案:

答案 0 :(得分:0)

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

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

尝试启用“在退出时撤消用户会话”,看看是否能解决问题。