Reactjs 在React Redux应用程序上实现SSO

Reactjs 在React Redux应用程序上实现SSO,reactjs,redux,single-sign-on,react-redux,keycloak,Reactjs,Redux,Single Sign On,React Redux,Keycloak,我正在尝试在React Redux应用程序上实现SSO,使用KeyClope作为外部身份提供者。其目的是,如果用户未经身份验证,则重定向到IdP的登录页面,并且在成功身份验证后,使用access_令牌访问另一个REST API微服务上受保护的资源 我尝试使用keydape的NodeJS适配器(),它可以将我重定向到IdP进行登录,我可以获得access_令牌,但这一切都发生在express会话中,并使用MemoryStore。我想知道这样行吗?在express store中保存JWT并在进行AP

我正在尝试在React Redux应用程序上实现SSO,使用KeyClope作为外部身份提供者。其目的是,如果用户未经身份验证,则重定向到IdP的登录页面,并且在成功身份验证后,使用access_令牌访问另一个REST API微服务上受保护的资源

我尝试使用keydape的NodeJS适配器(),它可以将我重定向到IdP进行登录,我可以获得access_令牌,但这一切都发生在express会话中,并使用MemoryStore。我想知道这样行吗?在express store中保存JWT并在进行API调用时从存储中检索它们

或者我应该尝试在Redux的存储中保存身份验证状态(JWT令牌)之类的操作吗?与会话cookie相比会更好吗?会话cookie可能更安全,但每次都需要访问存储,对吗

最重要的是,我如何实现Redux商店拥有JWT的方法

任何帮助都将不胜感激


提前谢谢

对于所有感兴趣的人,我通过以下方式实现了它:

  • 从keydrope服务器加载keydrope.js(keydrope的js适配器)
  • 使用客户端的配置参数初始化keydape脚本
  • 创建一个Reducer,在主React组件即将呈现时通过调用keydrope脚本获取JWT令牌
  • 将令牌添加到状态
不管怎么说,我们现在认为从服务器动态加载keydepot.js不是一个好主意,最重要的是,这将使我们的应用程序与keydeport紧密结合。我们现在正在寻找更通用的OIDC实现

至于存储令牌,我们认为Redux存储可能不是JWTs的最佳位置。我们正在考虑将令牌保存在本地存储中


希望这对别人有帮助

对于所有感兴趣的人,我通过以下方式实现了它:

  • 从keydrope服务器加载keydrope.js(keydrope的js适配器)
  • 使用客户端的配置参数初始化keydape脚本
  • 创建一个Reducer,在主React组件即将呈现时通过调用keydrope脚本获取JWT令牌
  • 将令牌添加到状态
不管怎么说,我们现在认为从服务器动态加载keydepot.js不是一个好主意,最重要的是,这将使我们的应用程序与keydeport紧密结合。我们现在正在寻找更通用的OIDC实现

至于存储令牌,我们认为Redux存储可能不是JWTs的最佳位置。我们正在考虑将令牌保存在本地存储中

希望这对别人有帮助

下面是一个演示如何将SSO与React应用程序集成的示例

  • 使用keydrope作为IDP
  • 用于SSO的OAuth 2
  • JWT作为Auth令牌(可以存储在Redux中,而不是Authprovider状态)
  • 反应界面
  • Node Js(Express)后端
免责声明:我是repo的所有者,下面是一个演示如何将SSO与React应用程序集成的示例

  • 使用keydrope作为IDP
  • 用于SSO的OAuth 2
  • JWT作为Auth令牌(可以存储在Redux中,而不是Authprovider状态)
  • 反应界面
  • Node Js(Express)后端

免责声明:我是repo的所有者

请查看redux oidc或实际执行oidc客户端工作的低级库,包括JWT处理(您需要的任何存储!)和redux store即时更新。已经回答了你重复的问题…@Leon,虽然redux-oidc和oidc客户端库看起来都很不错,我也尝试了它们,但我的用例与它们提供的有些不同。我的应用程序中没有登录(或未经验证的页面)组件。默认情况下,我们的目标是保护应用程序的所有路由,因此像CallbackComponent/redirect_uri这样的事情是我们不能做的。现在,我在react路由器的oneter中初始化OIDC适配器并使其工作,但现在我正试图使授权代码流在SPA中工作,以保护我的客户机密!我也没有“登录页”,而且“CallbackComponent”在所有其他路由后面都受到保护(是的,在SPA中)。。。任何命中都会得到验证,CallbackComponent只需正确设置localStorage/Cookie(并检查用户的到期时间等),以避免每次命中验证服务器。这里一切正常;)哦那太好了。因此,您有一个只用于设置/刷新令牌的组件,并将其视为回调组件。很好。这样一个组件的路径应该是什么?如果/home是用户发起登录的地方,而/callback是我们存储令牌的地方,那么如何将用户重定向回他开始登录的地方?历史请添加这些作为答案,以便我可以接受。请查看redux oidc或实际执行此项工作的低级库,称为oidc客户端-包括JWT处理(您需要的任何存储!)和redux存储更新开箱即用。已经回答了你重复的问题…@Leon,虽然redux-oidc和oidc客户端库看起来都很不错,我也尝试了它们,但我的用例与它们提供的有些不同。我的应用程序中没有登录(或未经验证的页面)组件。默认情况下,我们的目标是保护应用程序的所有路由,因此像CallbackComponent/redirect_uri这样的事情是我们不能做的。现在,我在react路由器的oneter中初始化OIDC适配器并使其工作,但现在我正试图使授权代码流在SPA中工作,以保护我的客户机密!我也没有“登录页”,而且“回调组件”在所有其他路由后面都受到保护(是的,在