Openid Connect单点登录与Enterprise Integrator中的权利中介

问题描述 投票:0回答:2

我使用wso2is作为我的OpenID提供程序来处理Web应用程序。然后我使用OAuth Mediator和Entitlement Mediator(使用wso2is作为我的PDP)通过wso2企业集成商从我的应用程序进行服务调用。

一切都很好。当我注销用户时出现问题。

我将用户发送到我的wso2is服务器上的/ oidc / logout,并将它们重定向回我的应用程序的注销URL。这也很好,并将用户从前端应用程序中取出。

如果我尝试使用已注销用户的访问令牌访问服务,则会出现问题。它很乐意允许我访问服务,直到访问令牌过期。

理想情况下,我想要的是,一旦用户注销,wso2ie将拒绝访问服务(在oauth调解器或授权调解器阶段)。

我已经看过前端注销,后端注销和openid会话管理,我不确定什么是最适合我想做的事情。

我也看过oidc / revoke端点,它感觉它完全符合我的需要,但是我还没能让它正常工作。无论我如何提出请求,它总是抱怨客户端ID不在请求中(即使我在发布的数据中明确设置它)

以下是wso2ei中的服务定义


    <?xml version="1.0" encoding="UTF-8"?>
    <!--Here is the service definition-->
    <proxy xmlns="http://ws.apache.org/ns/synapse"
       name="ManagerPage"
       startOnLoad="true"
       statistics="disable"
       trace="disable"
       transports="https">
    <target>
      <inSequence>
         <property name="scope" scope="default" type="STRING" value="openid"/>
         <oauthService password="admin"
                       remoteServiceUrl="https://a8auth-dev.ls.cbn:8443/services/"
                       username="admin"/>
         <entitlementService callbackClass="org.wso2.carbon.identity.entitlement.mediator.callback.OAUTHEntitlementCallbackHandler"
                             client="basicAuth"
                             remoteServicePassword="PASSWORD"
                             remoteServiceUrl="https://a8auth-dev.ls.cbn:8443/services"
                             remoteServiceUserName="USER">
            <onReject>
               <send>
                  <endpoint>
                     <address uri="https://a8services-dev.ls.cbn:8443/noperm/"/>
                  </endpoint>
               </send>
            </onReject>
            <onAccept>
               <send>
                  <endpoint>
                     <address uri="https://a8services-dev.ls.cbn:8445/manager/"/>
                  </endpoint>
               </send>
            </onAccept>
            <obligations/>
            <advice/>
         </entitlementService>
      </inSequence>
    </target>
    <description/>
    </proxy>

我是否需要创建一个检查OpenID会话管理的中介组件?也许这已经存在了?

我是否需要扩展OAuth Mediator以更好地检查会话状态?

任何正确方向的示例,链接或指针都会很棒。

谢谢。

wso2 wso2esb wso2is wso2ei
2个回答
0
投票

OIDC规范仅指定如何处理用户的经过身份验证的会话(尽管访问令牌是响应的一部分)。因此,在OIDC注销中,我们只处理终止用户的经过身份验证的会话。

撤销与OIDC登录一起获得的令牌超出了规范。即使在我们当前的实现中,这也不是直截了当的,因为我们不保持id_token和发出的访问令牌之间的相关性。

但是,我们在[1]中引入了一个扩展点,可以在OIDC注销流程中用于类似的要求。需要注意的是,即使使用此扩展,id_token和访问令牌之间的相关性也需要由扩展开发人员处理。

[1] https://github.com/wso2/product-is/issues/3227

请按照以下链接进行更好的解释

http://wso2-oxygen-tank.10903.n7.nabble.com/Validity-of-access-token-after-OIDC-SLO-td158896.html#a158919


0
投票

事实证明我正在使用错误的id来获取我试图撤销的令牌。一旦我开始使用jwt中的jti属性,一切都按预期工作。

© www.soinside.com 2019 - 2024. All rights reserved.