在没有 Web 服务器的情况下使用 SAML 响应 SSO
React SSO using SAML without web server
我有一个使用 Create-react-app
开发的网络应用程序
我将其托管在 IIS 上,IIS 仅响应加载应用程序,没有服务器端 逻辑(没有 Express 或任何其他网络服务器)
该应用程序在同一 IIS 上使用 RESTful API,这是我无法控制的(我无法进行更改)。
现在我的一位客户请求 将 SAML SSO 添加到我们的应用程序。
我想知道:
- 正常情况下,Service Provider是哪一个?我的 IIS Web 服务器?或 API 服务?
- 对于我的情况,我无法将 SAML 实施到 API 服务,我的 Web 服务仅用于加载我的应用程序而没有服务器端逻辑,我该如何实施 SAML?
- 谁能给我一些 React 实现 SAML SSO 教程或文章供参考?
感谢您的帮助,欢迎提供任何信息或建议!
in normal situation, which one is the Service Provider? My IIS Web server? or the API service?
我假设客户希望使用其内部 IdP 对用户进行身份验证。所以你的应用就是SP。但是您必须定义不同的令牌服务(详情如下)。
使用 SPA(single-page-applications)我看到了问题,在 SAML 中,用户被重定向或post离开 SAML 请求和 SAML 响应。
I have a login page to enter id/pw, post them to API server Login endpoint to authenticate and get back a JWT token. After that we use that token in API calls for authentication
API 服务正在使用基于提供的 username/password 颁发的 JWT 令牌。我建议扩展令牌服务(或使用不同的服务)以根据提供的 SAML 响应发布 JWT 令牌 - 令牌交换服务。在许多 OAuth 实现中,它被称为 SAML 授权类型。
I cannot implement SAML to API service, my web service only used to load my app without server side logic, how can I implement SAML?
通常在身份验证后,用户会被重定向或posted 到 SAML ACS 端点 URL,服务器可以在其中创建某种会话(cookie、参数、令牌等)和用户被重定向到 URL 返回带有会话信息的网页。
如果您使用的是 SPA,则可以使用弹出窗口 window 或带重定向的 SAML(而不是带 post),其中页面可以读取 SAML 响应参数(断言、签名、 ..) 并在上面提到的令牌交换服务中使用它们。
在处理 SAML 响应时,请尝试使用一些成熟的、已知的、out-of-box 库,这是一项安全服务,如果处理不当可能会导致安全漏洞。但是您需要在服务器端执行此操作,因为最后您需要 APIs.
使用的 JWT 令牌
我有一个使用 Create-react-app
开发的网络应用程序
我将其托管在 IIS 上,IIS 仅响应加载应用程序,没有服务器端 逻辑(没有 Express 或任何其他网络服务器)
该应用程序在同一 IIS 上使用 RESTful API,这是我无法控制的(我无法进行更改)。
现在我的一位客户请求 将 SAML SSO 添加到我们的应用程序。
我想知道:
- 正常情况下,Service Provider是哪一个?我的 IIS Web 服务器?或 API 服务?
- 对于我的情况,我无法将 SAML 实施到 API 服务,我的 Web 服务仅用于加载我的应用程序而没有服务器端逻辑,我该如何实施 SAML?
- 谁能给我一些 React 实现 SAML SSO 教程或文章供参考?
感谢您的帮助,欢迎提供任何信息或建议!
in normal situation, which one is the Service Provider? My IIS Web server? or the API service?
我假设客户希望使用其内部 IdP 对用户进行身份验证。所以你的应用就是SP。但是您必须定义不同的令牌服务(详情如下)。
使用 SPA(single-page-applications)我看到了问题,在 SAML 中,用户被重定向或post离开 SAML 请求和 SAML 响应。
I have a login page to enter id/pw, post them to API server Login endpoint to authenticate and get back a JWT token. After that we use that token in API calls for authentication
API 服务正在使用基于提供的 username/password 颁发的 JWT 令牌。我建议扩展令牌服务(或使用不同的服务)以根据提供的 SAML 响应发布 JWT 令牌 - 令牌交换服务。在许多 OAuth 实现中,它被称为 SAML 授权类型。
I cannot implement SAML to API service, my web service only used to load my app without server side logic, how can I implement SAML?
通常在身份验证后,用户会被重定向或posted 到 SAML ACS 端点 URL,服务器可以在其中创建某种会话(cookie、参数、令牌等)和用户被重定向到 URL 返回带有会话信息的网页。
如果您使用的是 SPA,则可以使用弹出窗口 window 或带重定向的 SAML(而不是带 post),其中页面可以读取 SAML 响应参数(断言、签名、 ..) 并在上面提到的令牌交换服务中使用它们。
在处理 SAML 响应时,请尝试使用一些成熟的、已知的、out-of-box 库,这是一项安全服务,如果处理不当可能会导致安全漏洞。但是您需要在服务器端执行此操作,因为最后您需要 APIs.
使用的 JWT 令牌