Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 如何调试与zendesk的SSO SAML集成_Node.js_Express_Single Sign On_Saml_Zendesk - Fatal编程技术网

Node.js 如何调试与zendesk的SSO SAML集成

Node.js 如何调试与zendesk的SSO SAML集成,node.js,express,single-sign-on,saml,zendesk,Node.js,Express,Single Sign On,Saml,Zendesk,我正在与zendesk建立单一登录SAML服务。我正在使用node/express和 Zendesk是SP, 我的SAML服务器有自己的IdP 用户操作步骤如下: 导航到account.zendesk.com并重定向到account.com/login?SAMLRequest=asdfasdfsd 然后,用户输入凭据并发布到节点服务器。 在服务器上,我能够解析*SAMLRequest,验证用户并给用户一个SAMLResponse 用户从节点服务器接收SAMLResponse并重定向到:accou

我正在与zendesk建立单一登录SAML服务。我正在使用node/express和

Zendesk是SP, 我的SAML服务器有自己的IdP

用户操作步骤如下:

导航到account.zendesk.com并重定向到account.com/login?SAMLRequest=asdfasdfsd

然后,用户输入凭据并发布到节点服务器。 在服务器上,我能够解析*SAMLRequest,验证用户并给用户一个SAMLResponse

用户从节点服务器接收SAMLResponse并重定向到:account.zendesk.com?SAMLResponse=asdfasdf&RelayState=xxx

此时,用户会得到一个找不到的页面。我不确定我做错了什么,在这一点上,我猜测我的SAMLResponse要么格式错误,要么我将用户重定向到错误的地址

PS:最初samlp不能立即工作,我分叉了回购协议并更新了几个依赖项,它开始工作


*最初我无法从zendesk解析SAMLRequest。当我在查询参数上使用decodeURIComponent时,有新行字符和空格,我用“+”替换了它们,这使它工作起来。然后我意识到他们的查询参数似乎不是URI编码的…

首先,SAML响应没有SAML重定向绑定。可以在HTTP POST中以表单编码参数的形式发送SAML响应,但不能在重定向中以查询参数的形式传递。您的SAML IDP实现不符合规范,因此Zendesk可能会拒绝该消息

见:

  • 身份提供者向服务提供者发出在步骤5中,身份提供者发出一条消息,由 将用户代理发送给服务提供商。HTTP POST或HTTP 工件绑定可用于将消息传输到服务 通过用户代理提供程序。该消息可能指示错误,或 将包括(至少)身份验证断言。HTTP重定向 不能使用绑定,因为响应通常会超过 大多数用户代理允许的URL长度

  • 首先,SAML响应没有SAML重定向绑定。可以在HTTP POST中以表单编码参数的形式发送SAML响应,但不能在重定向中以查询参数的形式传递。您的SAML IDP实现不符合规范,因此Zendesk可能会拒绝该消息

    见:

  • 身份提供者向服务提供者发出在步骤5中,身份提供者发出一条消息,由 将用户代理发送给服务提供商。HTTP POST或HTTP 工件绑定可用于将消息传输到服务 通过用户代理提供程序。该消息可能指示错误,或 将包括(至少)身份验证断言。HTTP重定向 不能使用绑定,因为响应通常会超过 大多数用户代理允许的URL长度

  • 首先,SAML响应没有SAML重定向绑定。可以在HTTP POST中以表单编码参数的形式发送SAML响应,但不能在重定向中以查询参数的形式传递。您的SAML IDP实现不符合规范,因此Zendesk可能会拒绝该消息

    见:

  • 身份提供者向服务提供者发出在步骤5中,身份提供者发出一条消息,由 将用户代理发送给服务提供商。HTTP POST或HTTP 工件绑定可用于将消息传输到服务 通过用户代理提供程序。该消息可能指示错误,或 将包括(至少)身份验证断言。HTTP重定向 不能使用绑定,因为响应通常会超过 大多数用户代理允许的URL长度

  • 首先,SAML响应没有SAML重定向绑定。可以在HTTP POST中以表单编码参数的形式发送SAML响应,但不能在重定向中以查询参数的形式传递。您的SAML IDP实现不符合规范,因此Zendesk可能会拒绝该消息

    见:

  • 身份提供者向服务提供者发出在步骤5中,身份提供者发出一条消息,由 将用户代理发送给服务提供商。HTTP POST或HTTP 工件绑定可用于将消息传输到服务 通过用户代理提供程序。该消息可能指示错误,或 将包括(至少)身份验证断言。HTTP重定向 不能使用绑定,因为响应通常会超过 大多数用户代理允许的URL长度

  • 事实上,正如@hans-z已经提到的,一个相同的响应总是通过POST发送!您可以通过在页面加载(通过JavaScript)时自动提交表单(包含SAMLResponse)的页面来触发此浏览器帖子


    既然您正在发送帖子,那么您的SAMLResponse应该不再是URL编码的了。

    事实上,正如@hans-z已经提到的,SAMLResponse总是通过帖子发送的!您可以通过在页面加载(通过JavaScript)时自动提交表单(包含SAMLResponse)的页面来触发此浏览器帖子


    既然您正在发送帖子,那么您的SAMLResponse应该不再是URL编码的了。

    事实上,正如@hans-z已经提到的,SAMLResponse总是通过帖子发送的!您可以通过在页面加载(通过JavaScript)时自动提交表单(包含SAMLResponse)的页面来触发此浏览器帖子

    由于您正在发送帖子,因此您的相同响应