最近のプロジェクトでは、クライアントに Java と php が必要です。Java には ucenter の代わりとなるアプリケーションがいくつかあり、これには
が必要です。?
これらのクライアントのシングル サインインとログアウトを有効にするために、オンラインで多くの関連情報を検索し、最終的に今日正常に構成できました。手順は次のとおりです。
?
1. cas サーバー: ダウンロード アドレス: http://downloads.jasig.org/cas/ 、 cas サーバーとクライアントには、最新バージョンと古いバージョンのさまざまなバージョンがあります
?
サーバーの最新バージョンは次のとおりです: cas-server-3.4.4-release.zip
?
cas-server-3.4.4-release.zip を解凍し、モジュール ディレクトリ内の cas-server-webapp-3.4.4.war の名前を cas.war に変更し、
にコピーします。?
Tomcat Web アプリで Tomcat を起動し、次の場所にアクセスします: http://localhost:8080/cas/loginログイン インターフェースが表示されます:
cas サーバーはデフォルトでユーザー名 = パスワード検証を使用し、tomact 用の証明書を設定する必要があります。https 検証が使用される場合は、次を参照してください。
?
http://blog.csdn.net/haydenwang8287/archive/2010/07/26/5765941.aspx。
?
1.1. https 検証を使用しない場合は、サーバーを構成する必要があります
1. casWEB-INFdeployerConfigContext.xml
?
? パラメーター p:requireSecure="false" を追加します。セキュリティ検証が必要かどうか、つまり HTTPS は使用されないことを意味します。追加後は次のようになります:
?
?
2. casWEB-INFspring-configuration
ticketGrantingTicketCookieGenerator.xml
???? p:cookieSecure="true"
???? p:cookieMaxAge="-1"
???? p:cookieName="CASTGC"
???? p:cookiePath="/cas" />
?
パラメータ p:cookieSecure="true" も同様に HTTPS 検証に関連しており、TRUE は HTTPS 検証が使用されることを意味し、FALSE は https 検証が使用されないことを意味します。
パラメータ p:cookieMaxAge="-1" は、簡単に言えば、COOKIE の最大ライフ サイクルです。 -1 は、現在開いている IE ウィンドウでのみ有効であることを意味します。他のウィンドウを閉じるか再度開くと、引き続き検証が必要になります。必要に応じて、3600 など、0 より大きい数値に変更できます。これは、3600 秒以内に IE ウィンドウを開くには検証が必要ないことを意味します。
?
1.2. サーバー側出口アクセス: http://localhost:8080/cas/logout、
?
?
終了後に戻れるようにするには、
サーバー側の cas-servlet.xml 構成
属性 p:followServiceRedirects="true" を追加
?
終了リンクは次のとおりです: http://localhost:8080/cas/logout?service=http://localhost:8080/Casclient/index.jsp
?
1.3. サーバー側の検証方法を変更し、データベース検証を使用します:
構成ファイルdeployerConfigContext.xmlを変更し、dbcp接続プールを追加します: (Oracleを例にします)
?
???
? ??????? >
????????? jdbc:oracle:thin:@192.168.18.26:1521:orcl
??? ?? >????
??????<値値>
??? ;プロパティ名="パスワード">
????????? <値>テスト値>
???
?
必要な jar パッケージは次のとおりです: (添付ファイルを参照: cas-server-support-jdbc-3.4.4.jar、commons-dbcp-1.2.1.jar、commons-pool-1.3.jar、ojdbc14_g.jar)
暗号化メソッドを構成します。cas には MD5 暗号化が組み込まれており、独自の暗号化クラスを作成して org.jasig.cas.authentication.handler.PasswordEncoder インターフェイスを実装することもできます。 ?
??
デフォルトの検証方法をコメントアウトし、データベースクエリ検証を使用します:
??????
????
? ???? ???
???
??
???
?
---------------これで cas サーバーの構成が完了しました。
?
?
2. Java クライアント構成、クライアントをダウンロードします:
http://downloads.jasig.org/cas-clients /、最新バージョンは: cas-client-3.2.0 ? モジュールの下の jar を Java クライアント Casclient1 のライブラリにコピーし、web.xml でフィルターを構成します。構成は次のとおりです (詳細は添付ファイルを参照)。 <ウェブアプリ version="2.4"
?xmlns="http://java.sun.com/xml/ns/j2ee
" ?<リスナー> ?
?<フィルター>????????? <フィルター名>CAS シングル サインアウト フィルター ?? ?????? ページは次のとおりです: <%
?xmlns:xsi="
http:/ /www.w3.org/2001/XMLSchema-instance" ?xsi:schemaLocation="
http://java.sun.com/ xml/ns/j2ee ?
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">?
??
?????? ;/リスナー>
??????
?
?
??? ??<フィルタ名>CASシングルサインアウトフィルタフィルタ名>
??????
? /filter-mapping>
?
??????? <フィルタ名>CASFilterフィルタ名>
??????<フィルタクラス>org.jasig.cas.client.authentication.AuthenticationFilterフィルタクラス>
?? ???????
????????????
?????? ???????
????????? ???
??????? ??????
???? ??????????サーバー名
?????????http:// 192.168.18.8:8989
??????? ;
?
?
??????
??? ?????
?
?
?
?
?????????
??????? 🎜>??????????
?????????
???????????????
???????
???????
??????????????? パラメータ名>
??????????????? ;param-value>http://192.168.18.8:8989
???????
?
?
??????? ;CAS 検証フィルター
??????
?
?
?
?????? ????
???????????? ???? org.jasig.cas.client.util.HttpServletRequestWrapperFilter
?
?????? ??
?
??????
??????? -class>org.jasig.cas.client.util.AssertionThreadLocalFilter
?
?
?
???
? -list>
?
AttributePrincipal プリンシパル = (AttributePrincipal)request.getUserPrincipal();???
String username =
%>ログインに成功しました。これはクライアント 1
ユーザー名: < ユーザー名 % >
http://localhost:8989/Casclient2/index.jsp
?
----------ここで Java クライアントの構成は成功しました。Tomcat に公開し、Casclient1 をコピーして名前を Casclient2 に変更し、Tomcat を起動して、
?
Casclient1 にアクセスしてログイン ページに移動します。ログインに成功すると、Casclient2 にアクセスするとログイン成功ページが表示されます。シングルサインインは成功しました。
?
?
3. PHP クライアントを設定し、PHP クライアントをダウンロードします: http://downloads.jasig.org/cas-clients/php/? 、最新バージョンは: CAS-1.2.0RC2
?
新しい PHP プロジェクト Phpcasclient1 を作成し、CAS フォルダーと CAS.php をプロジェクトにコピーし、CAS/client.php を変更し、https を http に変更し、docs/examples/example_simple.php を変更します
?
それをプロジェクトにコピーし、次のように変更します:
//
// phpCAS シンプルクライアント
//
// phpCAS lib をインポートします
include_once('CAS.php');
phpCAS::setDebug();
// phpCAS を初期化します
phpCAS::client(CAS_VERSION_2_0,'192.168.18.8',8080,'cas');
// CAS サーバーの SSL 検証はありません
phpCAS::setNoCasServerValidation();
// CAS 認証を強制します
phpCAS::forceAuthentication();
// このステップで、ユーザーは CAS サーバーによって認証されています
// ユーザーのログイン名は phpCAS::getUser() で読み取ることができます。
// 必要に応じてログアウトします
if (isset($_REQUEST['logout'])) {
?
?$param=array("service"=>"http://localhost/Phpcasclient1/example_simple.php");// ログアウトして戻ります
?phpCAS::logout($param);
}
// このテストでは、認証が成功したことを出力するだけですl ユーザーのログインは
?>
?
??? ;title>phpCAS シンプル クライアント
?
??? これはクライアント 1
???
??? p>phpCAS のバージョンは .
???
?? ;p>http://192.168.18.8:8989/Casclient1/index.jsp">Go Javaクライアント 1
?
終了< ;/p> ;?
php 設定で php_curl を有効にする必要があります。Phpcasclient1 を Phpcasclient2 にコピーできます
?
アクセス: http://localhost/Phpcasclient1/example_simple.php、ログインページにジャンプし、ログイン成功後に Phpcasclient2 にアクセスします。ログインは必要ありません。
?
PHP シングル サインインは成功しました。この時点で、Java クライアントにアクセスする場合、ログインする必要がないことがわかります。php アプリケーションと Java アプリケーション間のシングル サインインは成功しました。
?
注: php の phpCAS::client(CAS_VERSION_2_0,'192.168.18.8',8080,'cas'); のアドレスは Java のアドレスと同じである必要があります。 web.xml の cas サーバー アドレスは一貫しています。まず、IP: 192.168.18.8 とローカルホスト、 を記述します。
PHP と Java は常に同時にログインできず、長い間イライラしていました
?
----------------ここで Java クライアントと php クライアントが設定されました。これで、php と php の間に単一のログアウトがないことがわかります。クライアントが終了すると、Java クライアントも終了します。逆に、Java は終了しますが、php は同期的に終了しません。
?
で構成を行う必要があります。
phpCAS::setNoCasServerValidation();
// CAS 認証を強制しますphpCAS::forceAuthentication();
ここに を追加します
?
phpCAS::setNoCasServerValidation();
// CAS 認証を強制します
phpCAS::handleLogoutRequests();? ここでサーバー側のJava終了通知を検知し、phpとjava間の同期ログアウトを実現できます。
phpCAS::forceAuthentication();
??
?
discuz supesite のシングルサインオンについては、php でのシングルサインオンの原理を理解した後、discuz supesite のログインコードを変更する必要があります。 discuz のコードはlogging.phpです。
?
スーパーサイトはbatch.login.phpです。私はJava開発を行っていますが、PHPにはあまり詳しくないので、基本的に、最初にシングルサインインしてユーザーを取得します。名前、ユーザーによると
?
データベース内のパスワードを取得し、それを discuz システム自体のログイン システムに与えてログインします。 discuz は Cookie 検証を使用するため、Java 側で終了した後は discuz は終了しません。
?
誰かが変更に成功した場合は、私たちと共有してください。
?
参考URL:
http://blog.csdn.net/DL88250/archive/2008/08/20/2799522.aspx
http://www.wsria.com/archives/1349
http://tonrenyuye.blog.163.com/blog/static/30012576200922925820471/
http://www.discuz.net/thread-1416206-1-1.html