在React-Redux应用程序

时间:2017-07-02 18:54:57

标签: reactjs redux single-sign-on react-redux keycloak

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

我尝试使用Keycloak的NodeJS适配器(https://keycloak.gitbooks.io/documentation/securing_apps/topics/oidc/nodejs-adapter.html),它能够将我重定向到IdP进行登录,我可以获得access_token,但这一切都发生在快递会话中使用MemoryStore。我想知道这是否可以?在快递商店中保存JWT并在进行API调用时从商店中检索它们?

或者我应该尝试在Redux的商店中保存身份验证状态(JWT令牌)?与会话cookie相比,它会更好吗?会话cookie可能更安全,但每次都会涉及访问商店,对吗?

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

非常感谢任何帮助。

提前致谢。

2 个答案:

答案 0 :(得分:5)

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

  • 从keycloak服务器加载Keycloak.js(Keycloak的JS适配器)
  • 使用客户端的配置参数初始化Keycloak脚本。
  • 创建一个Reducer,通过在即将渲染主React组件时调用Keycloak脚本来获取JWT令牌。
  • 将令牌添加到州。

无论如何,我们现在相信从服务器动态加载Keycloak.js不是一个好主意,最重要的是,这会将我们的应用程序与Keycloak紧密结合。我们现在正在寻找更通用的OIDC实现。

至于存储令牌,我们认为Redux商店可能不是JWT的最佳位置。我们正在考虑在localStorage中保存令牌。

希望这有助于某人!

答案 1 :(得分:1)

这里是react app,展示了我们如何将SSO与React应用程序集成。

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

免责声明:我是该回购协议的所有者