簡単な説明
Jasig CAS (中央認証サービス)は、javaで書かれたWebアプリケーションです。 使用を開始するには、ほとんど何もする必要はありません。 ダウンロード、構成、アセンブル、デプロイする必要があります。 クライアントをセットアップします(シングルサインオンを行うサイト)。
作業スキーム
CASの仕組みは、次の図から理解できます。
YandexとGoogleでも同様のスキームが使用されています。
手順を考慮してください。
- 1.ユーザーがWebアプリケーションを開きます。
- 2.これまでの要求は、CASではなくアプリケーションによって受信されます。
- 3. Webアプリケーションは、ユーザーにセッションがないことを認識し、ユーザーをCASにリダイレクトします。 ユーザーにとっては、すべてが簡単です-彼はアプリケーションを開き、すぐにログインページを見ました。
- 4.ユーザーがログイン/パスワードを入力します
- 5. CASはそれらを検証します。
- 6.そして、ランダムな文字セット-「チケット」を生成します。 将来、彼はユーザーを特定します。
- 7.要求はWebアプリケーションにリダイレクトされ、チケットはパラメーターとして渡されます。
- 8. Webアプリケーションは、このチケットを持つユーザーがいるかどうかをCASに尋ねます。
- 9.応答がある場合、CASはユーザーのログインとその他のデータを送信します(設定方法によって異なります)。
設定方法
独自の認証方法
最初に、ユーザー名とパスワードを検証するためのロジックを定義する必要があります。 これを行うには、クラスorg.jasig.cas.authentication.handler.support.AbstractUsernamePasswordAuthenticationHandlerをオーバーライドする必要があります。
package mypack; /** * * @author http://habrahabr.ru/users/nucleotide/ */ public class MyAuthenticationHandler extends AbstractUsernamePasswordAuthenticationHandler { protected final boolean authenticateUsernamePasswordInternal( // true, final UsernamePasswordCredentials credentials) throws AuthenticationException { return credentials.getUsername().equals(credentials.getPassword()); } }
その後、CASがMyAuthenticationHandlerを使用する必要があることを認識できるように、Springコンテキストの構成を変更する必要があります。
Springについてあまり知らない場合は、ハブでその上で何かを探すか 、 www.springsource.orgでドキュメントを読むことができます。
CASでは、必要になる可能性のある主要なSpring構成はdeployerConfigContext.xmlファイルにあります。 クラスを追加します。
. . . . . <property name="authenticationHandlers"> <list> <bean class="org.jasig.cas.authentication.handler.support.HttpBasedServiceCredentialsAuthenticationHandler" p:httpClient-ref="httpClient" /> <bean class="mypack.MyAuthenticationHandler"> </bean> </list> </property> . . . . .
ログインに必要なすべてのもの(たとえば、dataSource)も、Springのコンテキストに挿入できます。
. . . . . <property name="authenticationHandlers"> <list> <bean class="org.jasig.cas.authentication.handler.support.HttpBasedServiceCredentialsAuthenticationHandler" p:httpClient-ref="httpClient" /> <bean class="mypack.MyAuthenticationHandler"> <property name="dataSource" ref="dataSource"/> </bean> </list> </property> . . . . .
展開
デプロイするには、jvmがインストールされたサーバーと何らかのDBMSが必要です。 許可にDBMSを使用しない場合でも、CASはそれを使用してサービステーブルを保存します。
これらのテーブルには、このサーバーを介した許可が可能なアドレスのリストが格納されます。
たとえば、CASを介してexample.comにログインする必要があるが、リストにない場合、認証は失敗します(思い出してください:ログインが発生したサイトのアドレスがパラメーターとして渡されます)。 リストをまったく使用できないため、任意のアドレスでログインできます。
クライアントをセットアップする方法
Jasicには、CAS(java、.net、およびphp用)を操作するための既製のライブラリが既にいくつかあります。 Javaの場合、これらは構成する必要があるだけの既成のHTTPフィルターです(これを行う方法については、 https : //wiki.jasig.org/display/CASC/CAS+Client+for+Java+3.1をお読みください ) 。
または、org.jasig.cas.client.util.AbstractCasFilterから継承して独自に作成します。
それ以外はすべて、ニーズに合わせた改良とカスタマイズです。 私自身の経験から、CASの展開と改良は非常に複雑で長いプロセスではないと言えます。 もちろん、キャプチャと統計、デザインを添付できます。
参照:
ダウンロードページで入手できます
写真はここから撮影されます。
Jasig: http ://www.jasig.org/cas
CASがすでに使用されているポータルのリスト: http : //www.jasig.org/cas/deployments
ライセンス: http : //www.jasig.org/cas/license