在没有 express 的 reactjs 中实现单点登录(saml2)
implement single sign on(saml2) in reactjs without express
我想在 React where
中使用 wso2 ei 实现 SSO SAML2
- 我去看看我有没有认证
- 如果未通过身份验证,我应该重定向到 sso URL
- 当我在 sso 身份提供商上成功登录时,我使用令牌重定向到我的 React 应用程序
- 然后保存token到localstorage继续
我已经在服务器端进行渲染的 Passport 和 Express 上进行了尝试。但我希望在客户端使用 React,步骤:
- 我进入我的主页并点击登录页面
- 它将我带到 wso2 身份提供者,然后我登录
- 然后我重定向到我的快递应用程序
简短的回答:你不能那样做。
您不能在没有后端的情况下使用 SAML。 SAML 要求您注册一个服务提供者 (SP),该服务提供者必须可以通过 SSL 证书进行识别。因此,SP 必须有一个私钥,出于显而易见的原因,您不能将其分发给浏览器客户端。最重要的是,断言端点应该接受 POST HTTP 请求,这在传统上只有服务器才能做到。
如果您知道要使用哪个 IdP,则可以跳过 IdP 发现,但无法绕过断言阶段。您必须具有 SSO 的断言端点。此端点必须能够解密使用 SP 的 public 密钥加密的消息,因此它必须在服务器上实现。
为了尽可能接近您想要的,您可以将 SP 实现为一个单独的微服务,它只有一个(如果您使用 DS,则为两个)端点。您的登录服务的断言端点可以为用户创建一个令牌,并将他们重定向到在查询变量中携带令牌的前端。
我想在 React where
中使用 wso2 ei 实现 SSO SAML2- 我去看看我有没有认证
- 如果未通过身份验证,我应该重定向到 sso URL
- 当我在 sso 身份提供商上成功登录时,我使用令牌重定向到我的 React 应用程序
- 然后保存token到localstorage继续
我已经在服务器端进行渲染的 Passport 和 Express 上进行了尝试。但我希望在客户端使用 React,步骤:
- 我进入我的主页并点击登录页面
- 它将我带到 wso2 身份提供者,然后我登录
- 然后我重定向到我的快递应用程序
简短的回答:你不能那样做。
您不能在没有后端的情况下使用 SAML。 SAML 要求您注册一个服务提供者 (SP),该服务提供者必须可以通过 SSL 证书进行识别。因此,SP 必须有一个私钥,出于显而易见的原因,您不能将其分发给浏览器客户端。最重要的是,断言端点应该接受 POST HTTP 请求,这在传统上只有服务器才能做到。
如果您知道要使用哪个 IdP,则可以跳过 IdP 发现,但无法绕过断言阶段。您必须具有 SSO 的断言端点。此端点必须能够解密使用 SP 的 public 密钥加密的消息,因此它必须在服务器上实现。
为了尽可能接近您想要的,您可以将 SP 实现为一个单独的微服务,它只有一个(如果您使用 DS,则为两个)端点。您的登录服务的断言端点可以为用户创建一个令牌,并将他们重定向到在查询变量中携带令牌的前端。