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

Haw*_*kes 1 single-sign-on reactjs keycloak redux react-redux

我正在尝试使用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的方法?

任何帮助将非常感激.

提前致谢.

Haw*_*kes 6

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

  • 从keycloak服务器加载Keycloak.js(Keycloak的JS适配器)
  • 使用客户端的配置参数初始化Keycloak脚本.
  • 当要渲染主React组件时,通过调用Keycloak脚本创建Reducer以获取JWT标记.
  • 将令牌添加到状态.

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

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

希望这有助于某人!