简单的Shibboleth ECP测试

更新:我在GitHub上发布了一种更简单的测试ECP的方法https://github.com/uni开云体育app客服kent-ms1/simple-soap-ecp-test

特殊的习惯(好吧,SAML2通过Shibboleth)提供了一种机制,通过代表客户端向可信身份提供者(IdP)进行SOAP回调,让非浏览器客户端直接与服务提供者(SP)进行身份验证/授权(AuthNZ)。这个机制叫做增强的客户端或代理(ECP)。

当我尝试着让它能够运行时,我发现对于这种机制的测试平台非常少,所以我想出了一个简单的方法,然后写了一个JMeter平台去更广泛地测试它。

注意:此处描述的方法仅涵盖使用ECP的“基本认证”方法。还有一些是我迄今为止没有经验的。

在非常基本的级别上,ECP回调只是一个包含一些HTTP基本身份验证凭证的HTTP SOAP请求。我制作了一个SAML2认证请求,用适当的SOAP胶水包装它,并将它发送到托管ECP端点的web服务器旋度

将下面的XML文档保存到一个文本文件中,并替换用双下划线标记的位,如下所示:

  • __RANDOM_STRING__:这可以是任何东西,只要在请求之间是唯一的。我从一个文件的MD5开始,并在每次使用它时手动增加最后一个字符
  • __AssertionConsumerServiceURL__:这是在您要模拟的SP的元数据中指定的URLAssertionConsumerService属性的绑定urn: oasis:名字:tc: SAML 2.0:绑定:有关
  • IssueInstant:当前时间。这是由IdP来检查,但设置它在几分钟内现在用我用过的格式,应该没问题。只要记住保持它接近现在:)如果使用JMeter那么查尔斯·汤普金斯佛罗里开云体育主頁(欢迎您)达大学的教授建议使用以下宏:
    ${__javaScript(var z=new Date();$日期= z.toISOString();,日期)}
  • __REMOTE_ENTITYID__:这是您正在模拟的SP的EntityID
< SOAP-ENV:信封xmlns: saml = " urn: oasis:名称:tc: saml 2.0断言“xmlns: samlp = " urn: oasis: names: tc: saml: 2.0:协议" xmlns: SOAP-ENV = " http://schemas.xmlsoap.org/soap/envelope/ " xmlns: ecp = " urn: oasis: names: tc: saml: 2.0:概要:SSO: ecp”> < SOAP-ENV: Header > < / SOAP-ENV: Header > < SOAP-ENV:身体> < samlp: AuthnRequest ID = " __RANDOM_STRING__ " ProtocolBinding = " urn: oasis:名字:tc: saml: 2.0:绑定:有关“AssertionConsumerServiceURL =“__AssertionConsumerServiceURL__ IssueInstant”=“__2013-01-01T00:00:00Z__”版本="2.0" >  __REMOTE_ENTITYID__     

把它保存成soap.xml然后继续旋度...

以这样一种方式调用curl,这需要一些努力:

curl -k \ -d @soap.xml \ -H "Content-Type: application/vnd. xmlpaos+xml" \——basic -u user:password \ https://idp.example.com/idp/profile/SAML2/SOAP/ECP \ | xmllint——pretty 1 -

如果URL和凭证是正确的,那么应该得到某种XML响应(我发现如果通过xmllint传递它来修饰它,它的可读性要高得多)。希望这将是一个响应对象,但可能是一个错误。

你可以加上"——trace-ascii到curl命令,以获得关于正在发生的事情的更详细的输出。

记住每次使用ID属性时都要更改它,并密切关注IssueInstant -如果它超过几分钟,那么它可能会被拒绝。

有关ECP(和SAML2更普遍的内容)的更多信息,请参阅规范...

3个对“简单的Shibboleth ECP测试

  1. 嗨,彼得,

    很抱歉没有回复。据我所知,它仍然有效-我们的配置没有改变,肯定仍然接收一个基本的认证头(Apache正在处理它们,我们的Shib不知道如何处理),但我实际上无法轻松看到原始数据包。

    你还有问题吗?

  2. 你好,

    这些信息是最新的吗?如果我将我们的Office 365域配置为设置为ECP端点的“ActiveLogOnUri”(https://ouridp/idp/profile/SAML2/SOAP/ECP),我们得到这样的请求发送到这个URI:
    POST /idp/profile/SAML2/SOAP/ECP HTTP/1.0
    连接:维生
    内容类型:应用程序/ soap + xml
    接受:* / *
    User-Agent: Mozilla/4.0(兼容;MSIE 6.0;Windows NT 6.1;…
    内容长度:1592
    主持人:ouridp

    http://schemas.xmlsoap.org/ws/2005/02/trust/RST/Issue
    https://ouridp:443/idp/profile/SAML2/SOAP/ECP
    MYREQUESTID

    a-username@ourfederateddomain
    thepassword

    2014 - 12 - 05 - t12:55:44z
    2014 - 12 - 05 - t12:55:44z

    http://schemas.xmlsoap.org/ws/2005/02/trust/Issue

    urn:联盟:MicrosoftOnline

    http://schemas.xmlsoap.org/ws/2005/05/identity/NoProofKey

    基本认证数据没有“授权”头,但是用户名+密码作为soap头()。

    是否有允许发送基本认证头的设置?

    非常感谢!

留下回复