web-dev-qa-db-ja.com

JWTを使用したシングルサインオン(SSO)

私はssoに関するいくつかの記事を読みましたが、心の中で答えを見つけることができませんでした。以下のようなシナリオがあります:

シナリオ:

  • 私の会社は、jwtを使用したssoメカニズムを使用したいと考えています。
  • 会社にはabc.com as abcxyz.com as xyzのような2つの異なるドメインがあります。
  • また、クライアント認証を管理するmasterdomainもあります。
  • ユーザー[〜#〜] x [〜#〜]最初にログインしたいabc
  • abcは資格情報をmasterdomainに送信し、masterdomainはユーザーを認証してから、署名済みjwtを作成してabcに返信します。
  • abcは、このjwtをcookieに保持します。
  • しばらくすると、同じコンピュータでabcへのログインが試行された場合、システムは資格情報を要求せず、自動的にユーザーにログインします。

質問:

ユーザーがxyzドメインでページを開こうとすると、システムはユーザーが以前にログインしたことをどのように理解しますか?つまりxyzドメインはjwtを持つabcのCookieに到達できません。 [〜#〜] x [〜#〜]がログインしようとしていることを示すxyzに送信する必要がある情報は何ですか?

前もって感謝します

16
baris usanmaz

Iframeを使用してホームページに接続された中間ドメインのcookie/localStorageにJWT認証トークンを保存できます

cross domain sso

シナリオ

  • abcは資格情報をmasterdomainに送信し、masterdomainはユーザーを認証してから署名付きjwtを作成しますabcに送り返すため。

  • aBCmasterdomainは、このjwtをcookieに保持します。

  • しばらくすると、同じコンピュータでabcにログインしようとすると、システムは資格情報を要求せず、自動的にユーザーにログインします。

最後に、ユーザーが2番目のドメインxyzに入ると、iframeを使用してmasterdomainストレージからjwtが回復され、自動的にログインしますユーザー

[〜#〜] cors [〜#〜]は問題ありません。masterdomain.comがストレージと通信にアクセスできるためです起点と終点が認識されている場合は、iframe間が許可されます( http://blog.teamtreehouse.com/cross-domain-messaging-with-postmessage を参照)

開発を簡素化するために、最近オープンソースプロジェクトとクロスドメインSSOとJWThttps://github.com/Aralink/ssojwt でリリースしました

11
pedrofb