2017-07-02 66 views
0

私は外部IDプロバイダとしてKeycloakを使用してReact-ReduxアプリケーションでSSOを実装しようとしています。ユーザが認証されず、認証が成功した後にaccess_tokenを使用して、別のREST APIマイクロサービス上の保護されたリソースにアクセスする場合は、IdPのログインページにリダイレクトすることが目的です。React-ReduxアプリケーションでSSOを実装する

私はKeycloakのNodeJSアダプタ(https://keycloak.gitbooks.io/documentation/securing_apps/topics/oidc/nodejs-adapter.html)を使用しようとしましたが、ログインするためのIdPに私をリダイレクトすることができ、私はaccess_tokenはを得ることができますが、これはすべての特急・セッションで発生し、MemoryStoreを使用しています。これが大丈夫なのかしら?エクスプレスストアにJWTを保存し、API呼び出し中に店舗からJWTを取得しますか?

また、Reduxの店舗で認証ステータス(JWTトークン)を保存してみる必要がありますか?セッションクッキーと比較した方が良いでしょうか?セッションCookieはより安全ですが、毎回ストアにアクセスする必要がありますか?

とりわけ、ReduxストアにJWTがある方法を達成するにはどうすればよいですか?

ご協力いただければ幸いです。

ありがとうございます。関心のあるすべての人のための

+0

[React-Reduxアプリケーションでの[OpenID Connect SSO]の複製の可能性があります(https://stackoverflow.com/questions/44958133/openid-connect-sso-in-react-redux-app) – Leon

答えて

3

、私は次のようにそれを実装するために管理:

  • 負荷Keycloak.js(KeycloakのJSアダプタ)keycloakサーバ
  • からコンフィギュレーションを使用してKeycloakスクリプトを初期化しますクライアントのパラメータ。
  • メインのReactコンポーネントをレンダリングしようとしているときにKeycloakスクリプトを呼び出して、JWTトークンをフェッチするためのリデューサを作成します。
  • トークンを状態に追加します。

とにかく、Keycloak.jsをサーバから動的に読み込むことは良い考えではないと思われます。これは、とりわけ私たちのアプリをKeycloakに強く結び付けることになると思います。私たちは現在、より一般的なOIDC実装を探しています。

トークンの保存に関しては、ReduxストアがJWTにとって最適な場所ではないと考えています。代わりにlocalStorageにトークンを保存することを検討しています。

これが誰かを助けることを願っています!

+0

は、 oidcまたは実際にoidc-clientという作業を行う低レベルのライブラリには、JWTの処理(必要な記憶域)が含まれています。あなたの重複した質問にすでに回答しています... – Leon

+0

@Leon、redux-oidcとoidc-clientライブラリはどちらもかなり素晴らしいようですが、私はそれらを試しましたが、私のusecaseはこれらのものとは多少異なります。私は私のアプリにログイン(または認証されていないページ)コンポーネントを持っていません。デフォルトでは、アプリケーションのすべてのルートを保護することを目標にしているので、CallbackComponent/redirect_uriのようなものはできないものです。 今のところ、私は反応ルータの_onEnter_でOIDCアダプタを初期化して動作させていますが、今ではクライアントコードを保護するためにSPAで認証コードフローを使用しようとしています! – Hawkes

+0

私は「ランディングページ」も持っていないし、「CallbackComponent」は他のすべてのルートの後ろで保護されている(はい、SPA内)...ANYヒットが認証されると、CallbackComponentは、認証サーバに毎回ヒットすることを避けるために、localStorage/cookiesを正しく設定し(ユーザの有効期限をチェックする)すべてここでうまくいく;) – Leon

関連する問題