SSO CAS
シングルサインオンSSO
シングルサインオンの主な原則は、各ログイン成功後に繰り返されていないユニークなトークントークン缶を生成することで、我々は単にで使用しました
マシンのUUIDは、トークンが生成されます。成功した鍵生成トークンで実行中の場合は、ユーザがログインすると、ログインしたユーザオブジェクト情報が文字列のJSON aftercropに変換
値は、[このデータ構造を使用してハッシュ] Redisの内側に配置されます。次に、ブラウザのCookieにトークンバックが書い置きます。本
のみ再アクセス楽屋に必要な他のモジュールがクッキートークンサーバを通過しながら、サンプルは、サーバが従っトークンにRedisのを得ることができるようになります
彼らは説明してログインして得ることができる場合の指示を得られない場合は、シングルサインオン機能を実現するためには、ログインしていない、ユーザー情報を取ります。
私は今、保存されたクッキーの時点である程度詳細に見てみましょう。個々のモジュールのデプロイ、当社のシステムは、nginxのことで、同じにマッピングされているので
ドメインの下では、クッキーは限り彼のスコープは、ドメイン名に設定されているとして、あなたはすべてで同じレベルドメインでのモジュールで共有することができます。そう
私たちは、文字列「SSO」キーがランダムに生成されるトークンクッキー値は内部、セット時間30分に書き込まれます。
そして、統一された検証トークンのインタフェースを行う。独自のインターセプタの内部の各モジュール、ボードをチェックし、確認するために、このトークンインターフェースを呼び出します
録音。統一された検証トークンインターフェースメイン処理は、第1内側Redisのを取得するために、トークン内部クッキーから取得し、次いで、トークンを介してです
ユーザー情報。これら二つのプロセス、任意の障害が、直接、その中兆候がない、ヌルを返し統一化ログイン・ページを傍受し、入力します。
ログイン後のURLを取得する簡単なクッキーの内部に傍受されたURLは、元のパスのジャンプではなく、家庭へのすべてのログインも、成功すると、
ユーザーエクスペリエンスを向上させます。成功した場合は、再度、新しいトークンおよびCookieの設定の値が(これは妥当性をリフレッシュすることである)、したがってより達成します
モジュールは、唯一のログインプロセスを必要とします。
簡単に言えば:
プレイするためにディズニーに行くようなSSOは、あなただけで簡単にチケットオフィスで再生することができますその中に、チケットを購入する必要があります。
怎么才能做到只需购买一次票,就可以到处通行呢?这时候就有了CAS,CAS就是SSO的一个解决方案
CAS
CAS 是 Yale 大学发起的一个开源项目,旨在为 Web 应用系统提供一种可靠的单点登录方法, CAS 在 2004
年 12 月正式成为 JA-SIG 的一个项目。 CAS 具有以下特点:
【1】 开源的企业级单点登录解决方案。
【2】 CAS Server 为需要独立部署的 Web 应用。
【3】 CAS Client 支持非常多的客户端(这里指单点登录系统中的各个 Web 应用,包括 Java, .Net, PHP, Perl,
Apache, uPortal, Ruby 等。
从结构上看, CAS 包含两个部分: CAS Server 和 CAS Client。
CAS Server 需要独立部署,主要负责对用户的认证工作,就像是把第一次登录用户的一个标识存到这里,以便此
用户在其他系统登录时验证其需不需要再次登录;
CAS Client 负责处理对客户端受保护资源的访问请求,需要登录时,重定向到 CAS Server,当用户访问我们的应
用时,首先需要重定向到CAS Server端机型验证,要是原来登录过,就免去登录,重定向到下游系统,否则进行
用户名密码登录操作。
下图是CAS 最基本的协议过程:
SSO 单点登录访问流程主要有以下步骤:
-
访问服务: SSO 客户端发送请求访问应用系统提供的服务资源。 -
定向认证: SSO 客户端会重定向用户请求到 SSO 服务器。 -
用户认证:用户身份认证。 -
发放票据: SSO 服务器会产生一个随机的 Service Ticket。 -
验证票据: SSO 服务器验证票据 Service Ticket 的合法性,验证通过后,允许客户端访问服务。 -
传输用户信息: SSO 服务器验证票据通过后,传输用户认证结果信息给客户端。
CAS相关术语
-
Ticket Granting ticket (TGT) :可以认为是CAS Server根据用户名密码生成的一张票,存在server端
-
Ticket-granting cookie (TGC) :其实就是一个cookie,存放用户身份信息,由server发给client端
-
Service ticket (ST) :由TGT生成的一次性票据,用于验证,只能用一次。相当于server发给client一张票,然
后client拿着这是个票再来找server验证,看看是不是server签发的。就像是我给了你一张我的照片,然后你
拿照片再来问我,这个照片是不是你。。。没错,就是这么无聊