SAML如何与非服务提供商的应用程序相关联?

时间:2015-06-22 15:14:20

标签: saml

所以我在SAML流程的基础知识上苦苦挣扎。这是我觉得令人困惑的情景。

我有一个java Web应用程序。用户已登录。我知道他们想要从第三方订购cookie,因为他们点击了“我想要巧克力饼干”链接。我也知道“Pillsbury饼干公司夫人”是一个“服务提供商”,因为她向我发送了她的元数据,我已经使用我的Gluu服务器(IdP)注册了她。我还给她发了我的IdP元数据,所以我们完成了整个握手的事情。

我的问题是......我现在如何将SAMLResponse发送给Pillsbury夫人?她给了我一个等待SAMLResponse的SOAP端点。如何告诉我的Java应用程序从我的gluu服务器获取一些XML作为SAMLReponse然后我可以传递给Pillsbury SOAP端点?那是我被卡住的部分......我不知道如何得到前进的回应。我可以在元数据中看到有很多SSO端点

    <SingleSignOnService Binding="urn:mace:shibboleth:2.0:profiles:AuthnRequest" Location="https://idp.myjavaapp.com/idp/profile/SAML2/Unsolicited/SSO"/>
    <SingleSignOnService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="https://idp.myjavaapp.com/idp/profile/SAML2/POST/SSO"/>
    <SingleSignOnService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST-SimpleSign" Location="https://idp.myjavaapp.com/idp/profile/SAML2/POST-SimpleSign/SSO

我是否应该点击其中一个SSO端点,它会产生一个响应,然后我可以转发到Pillsbury?你们其中一位SAML专家可以帮助我解决问题吗?提前谢谢。

3 个答案:

答案 0 :(得分:2)

可以通过几种方式生成SAML请求/响应。

IdP发起:

这是一个没有SAML请求的SAML响应。这要求用户登录/登录idP,idP将根据idp中的SP设置生成SAML响应。

SP发起了:

这通常是HTTP重定向,但也可以是POST。这是一个SAML请求重定向/ POST,它根据SP网站上的某个链接或按钮发送到idP。

答案 1 :(得分:1)

据我所知,你有以下关系:

Your App
        \
         3rd Party ordering
        /
IdP Server

您的应用需要向第三方提出请求,但也需要它来对IdP进行身份验证。是

通常,该过程的工作原理是第三方请求令牌本身。你的应用程序不应该有第三方的令牌 - 它应该只有自己的应用程序的令牌。

通常您首先向第三方发送您的应用特定请求。当他们收到那些信息时,他们会抓住它,然后向您的IdP发出SP-Initiated身份验证请求。它们将附加一些信息作为称为中继状态的auth请求的一部分。在IdP响应之后,该位信息用于重建会话。

一旦IdP收到请求,它会执​​行验证用户所需的任何操作,并将令牌发送回第三方。作为该响应的一部分,他们还发送中继状态。然后第三方验证令牌并根据需要设置会话,然后读取中继状态并设置继续订单所需的内部状态。

答案 2 :(得分:1)

你走在正确的轨道上。正如之前的答案所解释的那样,它可以通过以下两种方式之一完成:SP站点(Pillsbury)向您发送身份验证请求,或者您可以指示您的IDP / Gluu服务器向SP发送SAML消息,而不会提示他们:& #34;未经请求&#34;

如果是第一个&#34; SP-Initiated&#34;,您只需创建一个指向SP网站的链接,供用户浏览器关注。用户的浏览器访问SP站点,SP站点意识到它需要对用户进行身份验证:因此它会向您的IDP端点创建SAML身份验证请求,并将用户的浏览器指向该站点。然后,您的IDP服务器将根据您与SP站点建立的元数据/关系进行响应。正如解释的其他答案之一一样,该认证请求可以包括RelayState参数,该参数将被发送回SP以告知他们在SAML消息被消费之后将用户发送到何处。验证。我还没有使用过Gluu,但我相信SP会使用你在问题中显示的第二个端点来做到这一点。

如果是第二个&#34; IDP启动的&#34;,您需要将用户的浏览器定向到其中一个Gluu服务器端点以生成SAML断言,这将是POST&#39 ; d返回SP站点,没有SP站点的提示。这个使用较少,因为每次用户从您的站点被定向到SP站点时,他们将被迫通过AuthN进程以及其他原因。我相信这是您在问题中首次列出的端点。

以下是对Shibboleth发起的IDP的一个非常好的解释,应该有助于为您解决这个问题:https://wiki.shibboleth.net/confluence/display/SHIB2/IdPUnsolicitedSSO

祝你好运!