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

如何使用okta作为IDP实现单次注销?

云星波
2023-03-14

在Okta开发者帐户中,我启用了SAML单注销,并获得了身份提供者单注销URL。我使用从单点登录过程中获得的SAML响应中获得的NameID和SessionIndex创建了以下注销请求。

注销请求:

<?xml version="1.0" encoding="UTF-8"?>
<samlp:LogoutRequest xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol" Destination="https://dev-6#####.oktapreview.com/app/nepasoftdev660864_spdemo_1/exk606bnr5BZOBF7z0h7/slo/saml" ID="_b2be5dbd-928a-4554-a879-25a179e36ee2" IssueInstant="2016-03-25T10:20:47Z" Version="2.0">
   <saml:Issuer xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion">http://192.###.###.##/spdemo</saml:Issuer>
   <saml:NameID xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion" Format="urn:oasis:names:tc:SAML:2.0:nameid-format:transient">ramesh.shrestha@nepasoft.com</saml:NameID>
   <samlp:SessionIndex>id1458901238038.94596883</samlp:SessionIndex>
</samlp:LogoutRequest>

我收到以下注销响应,状态代码为RequestDenied

<?xml version="1.0" encoding="UTF-8"?>
<saml2p:LogoutResponse xmlns:saml2p="urn:oasis:names:tc:SAML:2.0:protocol" Destination="http://localhost:10262/Logout.aspx" ID="id1846510753301801884197562" InResponseTo="_b2be5dbd-928a-4554-a879-25a179e36ee2" IssueInstant="2016-03-25T10:22:40.389Z" Version="2.0">
   <saml2:Issuer xmlns:saml2="urn:oasis:names:tc:SAML:2.0:assertion" Format="urn:oasis:names:tc:SAML:2.0:nameid-format:entity">http://192.###.###.##/spdemo</saml2:Issuer>
   <ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
      <ds:SignedInfo>
         <ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
         <ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1" />
         <ds:Reference URI="#id1846510753301801884197562">
            <ds:Transforms>
               <ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" />
               <ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
            </ds:Transforms>
            <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
            <ds:DigestValue>LQwvto+ERXvrQRUB7LOUUznSXII=</ds:DigestValue>
         </ds:Reference>
      </ds:SignedInfo>
      <ds:SignatureValue>P+T1K.....ZYvCw==</ds:SignatureValue>
      <ds:KeyInfo>
         <ds:X509Data>
            <ds:X509Certificate>MIID.....7zK0rH</ds:X509Certificate>
         </ds:X509Data>
      </ds:KeyInfo>
   </ds:Signature>
   <saml2p:Status>
      <saml2p:StatusCode Value="urn:oasis:names:tc:SAML:2.0:status:RequestDenied" />
   </saml2p:Status>
</saml2p:LogoutResponse>

为什么可能是获得RequestDenied状态的原因?在Okta中启用单次注销时,我是否错过了注销请求或配置错误?

提前感谢。

共有1个答案

党权
2023-03-14

您还需要对LogoutRequest进行签名,因此需要包含一个签名元素(类似于您在LogoutResponse中得到的内容)。

也就是说,我遇到了与你相同的问题。我已经签署了我的LogoutRequest,但仍然收到状态为RequestDenied的LOGOUTRESPSE。

我确实在Okta的支持页面上找到了这个线程(https://support.okta.com/help/answers?id=906F0000000I07YIAS),它表明HTTP-ReDirect绑定不支持注销,因此您可能需要HTTP-Post。我还没有尝试过。

 类似资料:
  • 我的要求是,对于销售人员,应该允许用户在使用Okta作为身份提供者的my产品中进行SSO(单点登录)。 然而,问题在于,在这种情况下,我们希望使用salesforce作为身份提供者,使用my product作为服务提供者。 我知道我会通过联合身份通过SAML断言来做到这一点。我正在浏览各种参考资料,并努力找到实现这个案例所需遵循的确切步骤。 我可以举很多例子将Okta中的salesforce添加为

  • 因此,我的任务是为客户端的Oracle Hyperion应用程序启用SSO。我使用的方法是基于自定义标头变量的SSO。 平联邦目前作为许多应用程序的SSO身份验证服务器存在,计划是在它(平馈SP)从Okta IDP检索属性/身份验证用户时使用它作为目标应用程序的SP。 我对这个过程相对较新,因为您可能已经猜到了,并且正在寻找有关如何配置的澄清: > SP 从 Pingfed 启动 SSO,并从 O

  • 我成功地将OneLogin java saml库用于saml SSO。但Active Directory联合身份验证服务(ADFS)的SLO(单次注销)存在问题。ADFS拒绝库创建的LogoutRequest,而SimpleSAMLphp IdP接受它。我在LogoutRequest创建时传递从ADFS接收的nameId和sessionIndex。 以下是生成的请求和收到的响应: 授权请求: 答复

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

  • 实现用于身份验证的 SSO 流。我是这里的新手,无法到达某些地方。我试图实现服务提供商发起的流程。它看起来像这样: < li >用户单击我的前端应用程序上的按钮,通过one 进行身份验证。 < li >用户重定向到联盟表单并选择所需的IdP进行身份验证。 < li >单击IdP按钮后,用户重定向到某些IdP上的特殊授权表单并输入他们的凭据。 < li >用户点击< code >登录并通过< cod

  • 有人能告诉我如何为IDP发起的SSO连接传递RelayState吗?我们有SSO工作,但想深度链接到服务提供商应用程序中的页面。他们在RelayState上指示我们通过,但我不知道如何格式化Okta的URL。我们正在使用应用程序嵌入式链接,并希望将RelayState附加到查询字符串中。