Cookie ベースの SSO ログイン分析と実装
多くの大手インターネット企業は現在、多くのアプリケーションを持っています。たとえば、以下は Taobao のスクリーンショットです:
Tmall Ju Huishan。 Toutiao とその他のアプリケーションは別のアプリケーションであり、まったく異なるドメイン名を使用している場合もあります。ただし、淘宝網に登録されているすべてのユーザーは一連のユーザー名とパスワードを使用するため、これらのシステム間で直接切り替えると、ログイン状態が同期されなくなります。とても悪い。別の例として、多くの企業には人事システム、財務システム、勤怠システムなどの多くの社内システムがあります。従業員が 1 つのシステムにログインし、別のシステムにジャンプするためにログインする必要がある場合、非常に不快になります。
これに基づいてSSO(Single Sign On)
が誕生しました。もちろん、この要件を実現するにはさまざまな方法がありますが、Cookie を使用するのが最も簡単な方法の 1 つです。解決する必要がある主な問題は、Cookie
をドメイン間で転送する方法です。 🎜> 他のアプリケーション (同じドメイン内ではない) に通知しますか? Cookie
、so
メカニズムに詳しくない場合は、まず cookie
を理解して、google
がドメインを越えないよう設計されている理由やその他の関連問題について一般的に理解してください。 。 cookie
しかし、この方法にはいくつかの欠点があることが判明しました:
a. 同じドメイン名を持つすべてのシステムが SessionID を取得できますが、これは変更されやすく安全ではありません。ドメイン間で。
チケット検証では、現在このアプローチを採用しています。
b. すでにログインしている場合は、コールバック アドレスに直接ジャンプし、
を返します。 >d. ログインしていない場合、ユーザーはユーザー名/パスワードを正しく入力し、認証パスがコールバック アドレスにジャンプし、認証チケットを返します。
e. サブシステムはチケットを取得し、SSO を呼び出してユーザー ID を取得します。およびその他の情報が表示され、成功後にユーザーがログインできるようになります。
前に述べたように、
を実装する方法は、主にクロスドメインの問題を解決する方法に関するものです。まず、 の Cookie
属性について説明します。 SSO
Set-Cookie
domain
Cookie ドメイン
の Http
フィールドは、この server
が配置されているドメインを示すために使用されます。 Set-Cookie
チェストナット: Set-Cookie
domain
にアクセスすると、cookie
が戻りヘッダーに
を追加し、
が指定されていない場合、この www.cookieexm.com
のデフォルト ドメインは server
になります。つまり、クライアントは Set-Cookie
にアクセスする場合にのみ、この domain
をサーバーに返します。 cookie
www.cookieexm.com
を www.cookieexm.com
として指定すると、クライアントはドメイン名 cookie
にアクセスするときに
を返すことができます。 domain
したがって、次の結論が導き出されます: .cookieexm.com
クライアントは Cookie のドメインと最後から一致します www.cookieexm.com www1.cookieexm.com a.cookieexm.com ***.cookieexm.com
この基礎により、cookie
ログインを実装できます。
Cookie の注意点SSO
**.a1.a2 **.b1.b2 **.c1.c2
www.a1.a2
www.a1.a2
www.a1.a2
リクエストを受信したら、ログイン Cookie が含まれているかどうかを確認し、まだログインしていない場合は、SSO 認証センター .a1.a2
に書き込みます。 、SSO
が認証されました。ビジネス システム www.a1.a2
のリダイレクトが完了します。前述の結論から、.a1.a2
で終わるすべてのビジネス システムは、その後 cookie
注記:
ビジネス認証システムは必ずしも存在するわけではありません。システムによっては、SSO Authorization
からビジネスに直接リダイレクトされる場合があります。システムに SSO
を入力し、認証情報を取得します。
上記に従って、現時点でユーザーが www.b1.b2
アプリケーションにアクセスすると、次のようになります。
www.a1.a2
にアクセスする場合との違いは、SSO Authorization
にリダイレクトするときにユーザー名を入力する必要がなくなったことです。これは、この時点で sso.s1.s2
にはすでに cookie
があるため、cookie
を直接使用して確認できるためです。
上記は Cookie
をベースにした簡易ログインシステムです。
最初の質問については、通常、分散キャッシュを使用できます。 memcached に似たソリューションで、スケーラビリティを提供できます。 データ ボリューム メカニズムにより、効率的なアクセスも提供できます
2 番目の質問では、デジタル証明書の署名または md5 などの方法のいずれかによるデジタル署名方法が一般に採用されます。 URL を使用する場合、md5 は検証が必要なパラメータを暗号化し、トークンとともに返します。最後に、ログインが必要なシステムが信頼関係を検証するために使用される場合、トークンが必要になります。 SSO システムは、情報が変更されたかどうかを確認できます。
最後の問題については、簡単に言うと、システムだけで解決できます。同様に、ホワイトリストにあるシステムは、ログインする必要がなく、ホワイトリストにあるシステムのみが本番信頼関係を要求できます。
転載アドレス: http://www.jianshu.com/p/baa94d5f1673