[解決済み] クロスドメイン認証のためのJWTを用いたシングルサインオンフロー
質問
JWTの使用については、ウェブ上に多くの情報があります(
Json Web Token
) を認証に使用することについては、ウェブ上に多くの情報があります。しかし、JWT トークンを
マルチドメイン環境でのシングルサインオンソリューション
.
私は、異なるホストに多くのサイトを持っている会社で働いています。ここでは example1.com と example2.com . シングルサインオンのソリューションが必要です。 example1.com で認証された場合、そのユーザは example2.com にも認証されるようにしたいのです。
を使うことで
OpenIdコネクト
のフローで、認証したいユーザが
example1.com
にリダイレクトされます。
認証サーバ
(または
OP
: "OpenId Provider")。ユーザーはそのサーバーで認証され、元の
example1.com
サイトへリダイレクトします。(私は、この他に
中間トークン
を返す別のフローがあることは理解していますが、これは私たちには必要ないと思います)。
これでユーザーは
example1.com
に戻り、認証されました! 彼はリクエストを行うことができ、JWT トークンを
Authentication
ヘッダで JWT トークンを渡すと、サーバーは署名された JWT を確認できるため、ユーザーを識別することができます。素晴らしい!
最初の質問:
JWTトークンはどのようにクライアントに保存されるべきですか?これについては多くの情報があり、人々は
Web Storage
を使うのが良いという意見で一致しているようですが、古き良き
cookies
. ブラウザを再起動してもJWTが持続するようにしたいので、JWTを生成するために
Local Storage
ではなく
Session Storage
...
これでユーザがブラウザを再起動しても、認証は example1.com で認証されます。
また、もし example1.com が私たちの別のドメインに Ajax リクエストを行う必要がある場合、私は CORS を設定することで、それが可能になることを理解しています。しかし、私たちの主なユースケースはクロスドメインリクエストではありません。 シングル サインオン ソリューション !
したがって、本題の:
さて、もしユーザーが
example2.com
にアクセスし、すでに持っている JWT トークンを使って認証させたい場合、どのようなフローになるでしょうか?
Local Storage
はクロスドメインアクセスを許可していないようなので、この時点ではブラウザはJWTトークンを読み込んで
example2.com
!
べきである。
- ユーザは 認証サーバ にリダイレクトされますか?ユーザが認証されたとき example1.com と表示されます。 認証サーバ はユーザーにクッキーをセットしているかもしれないので、この新しい認証リクエストは example2.com への新しい認証リクエストは、そのクッキーを使ってユーザがすでに認証されていることを知り、すぐにリダイレクトして example2.com にリダイレクトすることができますか?
- あるいは、ブラウザは example2.com に行くことなく、JWT トークンにアクセスすることができます。 認証サーバ にアクセスする必要があるのですか?私は、そこに クロスストレージソリューション があるようですが、それらは広く使われているのでしょうか?それらはクロスドメイン SSO 環境への提案されたソリューションですか?
私たちは派手なものは望んでいません。ほとんど使われているソリューションで満足です!
どのように解決するのですか?
ユーザーは再び認証サーバーにリダイレクトされ、example2.comに特化した新しいトークン(JWT)を取得する必要があります。これは、OpenID Connectやその他のクロスドメイン連携SSOプロトコルがどのように機能するかということです。
関連
-
[解決済み] smbclient NT_STATUS_ACCESS_DENIED
-
[解決済み] JWTにおける時間切れの問題
-
[解決済み] JWT(JSONウェブトークン)の有効期限を自動的に延長する機能
-
[解決済み] Google OAuth 2 認証 - エラー: redirect_uri_mismatch
-
[解決済み] 認証とセッション管理に関するSPAのベストプラクティス
-
[解決済み】node.jsのユーザー認証ライブラリは?
-
[解決済み】JWTをブラウザに保存する場所は?CSRFから保護する方法は?
-
[解決済み] SSOはCASかOAuthか?
-
[解決済み] クロスドメイン認証のためのJWTを用いたシングルサインオンフロー
-
[解決済み] OpenIDとOAuthの比較 [重複]について
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] smbclient NT_STATUS_ACCESS_DENIED
-
[解決済み] GitHub アカウントのユーザー名を変更する
-
[解決済み] JWTにおける時間切れの問題
-
[解決済み] Google OAuth 2 認証 - エラー: redirect_uri_mismatch
-
[解決済み] ユーザー名とパスワードでMongoDBを保護する方法
-
[解決済み】OAuth2の「暗黙の」フローはとてもうまく機能しているのに、なぜ「認証コード」フローがあるのですか?
-
[解決済み】Cookieベースの認証はどのように機能するのですか?
-
[解決済み】JWTが盗まれたらどうする?
-
[解決済み] トークン認証とCookieの比較
-
[解決済み] クロスオリジンリクエストにCookieを設定する