RightNow SSO使用SAML 2.0和OIM / OIF

时间:2014-09-08 22:12:24

标签: saml-2.0 rightnow-crm

我目前停留在使用SAML 2.0在RightNow中实现SSO。从我在RightNow文档中读到的内容,它支持SAML 2.0,但几乎没有注意事项,例如发送带有SAML响应的签名证书而不支持导入元数据到RightNow。 我正在将RightNow与Oracle身份联合(11.1.1.6)集成在一起,我对前进的方向感到有些困惑。理想情况下,在集成SSO应用程序时,我们拥有有助于设置服务提供程序的元数据(理想情况下,这是一个需要SSO服务的应用程序)。但是,如果没有提供者元数据,我无法弄清楚如何将RightNow应用程序设置为服务提供者! RightNow有没有办法生成和下载元数据!?如果没有,如何配置它?有没有例子可以指示我展示如何做到这一点?

感谢你的时间和精力。提前谢谢。

@Andy - 元数据文件

<md:EntityDescriptor xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata" xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" entityID="https://myorg--test.custhelp.com/fed/sp" validUntil="2023-05-07T16:44:40.193Z">
    <ds:Signature></ds:Signature>
    <md:SPSSODescriptor WantAssertionsSigned="false" AuthnRequestsSigned="false" protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol">
        <md:KeyDescriptor use="signing">
            <ds:KeyInfo>
                <ds:X509Data>
                    <ds:X509Certificate>X509_CERTIFICATE</ds:X509Certificate>
                    <ds:X509IssuerSerial>
                        <ds:X509IssuerName>
                            X509_ISSUER_NAME</ds:X509IssuerName>
                        <ds:X509SerialNumber>X509_SERIAL_NUMBER</ds:X509SerialNumber>
                    </ds:X509IssuerSerial>
                    <ds:X509SubjectName>X509_SUBJECT_NAME</ds:X509SubjectName>
                </ds:X509Data>
            </ds:KeyInfo>
            <md:EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-1_5"/>
            <md:EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes128-cbc"/>
            <md:EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes192-cbc"/>
            <md:EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes256-cbc"/>
            <md:EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#tripledes-cbc"/>
        </md:KeyDescriptor>
        <md:NameIDFormat>urn:oasis:names:tc:SAML:2.0:nameid-format:unspecified</md:NameIDFormat>
        <md:AssertionConsumerService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="https://myorg--test.custhelp.com/cgi-bin/myorg.cfg/php/admin/sso_launch.php?p_subject=Account.Login" index="0" isDefault="true"/>
            <md:AttributeConsumingService index="0" isDefault="true">
                <md:ServiceName xml:lang="en">https://myorg--test.custhelp.com/cgi-bin/myorg.cfg/php/admin/sso_launch.php</md:ServiceName>
                    <md:RequestedAttribute Name="uid" isRequired="true"/>
            </md:AttributeConsumingService>
    </md:SPSSODescriptor>
    <md:Organization>
        <md:OrganizationName xml:lang="en">My Organization RightNow Customer Experience Site</md:OrganizationName>
        <md:OrganizationDisplayName xml:lang="en">My Organization RightNow Customer Experience</md:OrganizationDisplayName>
        <md:OrganizationURL xml:lang="en">http://www.my-org.com</md:OrganizationURL>
    </md:Organization>
</md:EntityDescriptor>

在Oracle RightNow中点击SSO URL后,我没有得到回复。我使用FireFox的SAML跟踪器插件验证了这一点,并且没有返回错误代码。我还使用%error_code%和%session%变量配置了SAML_ERROR_URL。 X509证书已上传到RightNow,并且已设置USE_KNOWN_ROOT_CAS。

我的预感是终点网址与它有关。从这里向前走? 再次感谢你的帮助安迪。

1 个答案:

答案 0 :(得分:2)

RightNow + SAML是一种痛苦,无法调试,但可以做到。经过多次试验和错误,我已经能够在过去与OIF合作。

应该有一种手动方式在OIF中创建服务提供者。 RightNow没有任何方法可以自动生成OIF元数据,但这里有一个可以用作起点的存根。您需要为特定网站进行一些替换:

<?xml version="1.0" encoding="UTF-8"?><md:EntityDescriptor xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" entityID="RightNow-Site" validUntil="2023-05-07T16:44:40.193Z">
   <md:SPSSODescriptor WantAssertionsSigned="true" protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol">
      <md:KeyDescriptor use="signing">
         <ds:KeyInfo>
            <ds:X509Data>
               <ds:X509Certificate>YOUR_PUBLIC_CERT_HERE</ds:X509Certificate>
            </ds:X509Data>
         </ds:KeyInfo>
      </md:KeyDescriptor>
      <md:NameIDFormat>urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified</md:NameIDFormat>
      <md:AssertionConsumerService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="https://my-url.custhelp.com/cgi-bin/my-interface.cfg/php/admin/sso_launch.php?p_subject=Account.Login" index="0" isDefault="true"/>
      <md:AttributeConsumingService index="0" isDefault="true">
         <md:ServiceName xml:lang="en">MY_SERVICE_NAME</md:ServiceName>
         <md:RequestedAttribute Name="mail" isRequired="true"/>
      </md:AttributeConsumingService>
   </md:SPSSODescriptor>
</md:EntityDescriptor>

我之前尝试的其他说明:

  • 您的签名证书上的证书使用似乎很重要。我从来不确定RN需要哪些用法,但它似乎确实起到了一个作用
  • 上面的元数据假设您使用Login作为NamedID。您可以根据RN说明进行更改