Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/27.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
Reactjs 在不使用web服务器的情况下使用SAML响应SSO_Reactjs_Single Sign On_Saml - Fatal编程技术网

Reactjs 在不使用web服务器的情况下使用SAML响应SSO

Reactjs 在不使用web服务器的情况下使用SAML响应SSO,reactjs,single-sign-on,saml,Reactjs,Single Sign On,Saml,我有一个使用Create-react-app开发的web应用程序 我把它放在IIS上,IIS只响应加载应用程序,上面没有服务器端逻辑(没有Express或任何其他web服务器) 该应用程序正在同一IIS上使用RESTful API,这超出了我的控制(我无法进行更改) 现在,我的一个客户请求将SAML SSO添加到我们的应用程序中 我想知道: 在正常情况下,哪个是服务提供商?我的IIS Web服务器?还是API服务 就我而言,我无法实现SAML到API服务,我的web服务只用于加载我的应用程序,没

我有一个使用
Create-react-app

开发的web应用程序 我把它放在IIS上,IIS只响应加载应用程序,上面没有服务器端逻辑(没有Express或任何其他web服务器)
该应用程序正在同一IIS上使用RESTful API,这超出了我的控制(我无法进行更改)

现在,我的一个客户请求将SAML SSO添加到我们的应用程序中

我想知道:

  • 在正常情况下,哪个是服务提供商?我的IIS Web服务器?还是API服务
  • 就我而言,我无法实现SAML到API服务,我的web服务只用于加载我的应用程序,没有服务器端逻辑,我如何实现SAML
  • 有谁能给我一些SAMLSO教程或文章作为参考
  • 感谢您的帮助,欢迎您提供任何信息或建议

    在正常情况下,哪个是服务提供商?我的IIS Web服务器?还是API服务

    我假设客户端希望使用其内部IdP对用户进行身份验证。因此,您的应用程序是SP。但您必须定义不同的令牌服务(详情如下)

    对于SPA(单页应用程序),我看到了问题所在,在SAML中,用户被重定向或发布到SAML请求和SAML响应之外


    我有一个登录页面来输入id/pw,将它们发布到API服务器登录端点以进行身份验证并获取JWT令牌。之后,我们在API调用中使用该令牌进行身份验证

    API服务使用基于提供的用户名/密码发布的JWT令牌。我建议扩展令牌服务(或使用不同的服务)以基于提供的SAML响应(令牌交换服务)发出JWT令牌。在许多OAuth实现中,它被称为SAML grant类型

    我无法实现SAML到API服务,我的web服务只用于加载我的应用程序,没有服务器端逻辑,如何实现SAML

    通常在身份验证之后,用户被重定向或发布到SAML ACS端点URL,服务器可以在该URL中创建某种会话(cookie、参数、令牌等等),用户被重定向到网页返回的URL,该URL包含会话信息

    如果您使用的是SPA,则可以使用弹出窗口或带重定向的SAML(而不是post),页面可以在其中读取SAML响应参数(断言、签名等),并在上述令牌交换服务中使用它们


    在处理SAML响应时,请尝试使用一些成熟的、已知的、现成的库,这是一种安全服务,如果执行不当,可能会导致安全缺陷。但是,您需要在服务器端这样做,因为最后您需要API使用的JWT令牌。

    SAML通常不用于SPA(单页应用程序)。当前如何对API的调用进行身份验证和授权?我有一个登录页面,输入id/pw,将它们发布到API服务器登录端点以进行身份验证并获取JWT令牌。之后,我们在API调用中使用该令牌进行身份验证。我建议您转向OAuth,或者更好的OIDC。从安全角度来看,允许客户端上运行的SPA验证SAML断言是一个危险的选择。(编辑:既然ibre已经阅读了你的最后一段,也许你是在暗示这一点……但你应该非常清楚,这个断言应该在服务器端得到验证。)@AndrewK。是的,有一些限制和影响没有明确说明。SAML响应是短期的、大的,实际上并不打算用作访问令牌(我已经看到了)。即使在技术上可以在web客户端验证SAML令牌(我建议不要这样),实际上也没有办法只在客户端安全地创建访问令牌。感谢所有信息。我在想这是否有效:1。我将使用ExpressJS2安装一个新的web服务器。Express服务器处理SAML SSO 3。我将更改登录名,调用新的Express服务器进行登录,它将为我执行SSO 4。如果登录成功,Express Server将调用原始API服务器以获取令牌5。SPA应用程序将一如既往地继续使用令牌,只有在令牌过期时,再次调用SSO才能正常工作?还是有更好的建议?谢谢您的帮助。@EricCheng
    Express服务器处理SAML SSO
    很好。请使用一些成熟的库(passport saml,…)
    如果令牌过期,请调用SSO
    如果您没有任何刷新令牌,则需要重新验证
    调用原始API服务器获取令牌
    基于什么获取令牌?通常,身份验证服务器需要直接返回访问令牌(saml断言中没有密码),这可能有效,但您必须解决细节问题。祝你好运:)