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

adapter openid pingfederate oauth2

239 观看

1回复

23 作者的声誉

我正在使用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 logout端点。

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

否则,如果我直接登录授权管理页面并调用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.ping2016-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)找到null authn beans 2016-02-18 08:31:34,708 DEBUG [com.pingidentity .jgroups.MuxInvocationHandler]在org.sourceid.saml20.service.impl.localmemory.IdpSessionRegistryMapImpl@e599115 {bean-> sessionLists = 0,assertionId-> bean = 0,pfsessionid-> beanSets = 6}上调用getRegistered 2016-02- 18 08:31:34,708 tid:b4ryqAPIEA6R0ywXzVmC6XtykHc DEBUG [org.sourceid.saml20.service.impl.grouprpc.IdpSessionRegistryGroupRpcImpl]调用mode: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-> sessionLists = 0,assertionId-> bean = 0,pfsessionid-> beanSets = 6} *

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

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

作者: jack_sparrow 的来源 发布者: 2016 年 2 月 16 日

回应 1


0

5329 作者的声誉

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

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

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

作者: Scott T. 发布者: 2016 年 2 月 18 日
32x32