ホームページ バックエンド開発 PHPチュートリアル cas はシングルサインオンとログアウトを実装します (Java および PHP クライアント) (転送)

cas はシングルサインオンとログアウトを実装します (Java および PHP クライアント) (転送)

Jun 13, 2016 pm 12:29 PM
cas filter gt lt name

cas はシングルサインオンとログアウトを実装します (Java および PHP クライアント) (転送)

最近のプロジェクトでは、クライアントに 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:httpClient-ref="httpClient"/>

?

? パラメーター p:requireSecure="false" を追加します。セキュリティ検証が必要かどうか、つまり HTTPS は使用されないことを意味します。追加後は次のようになります:

?

?p:httpClient-ref="httpClient"? p:requireSecure="false"/>

?

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 インターフェイスを実装することもできます。

?

??? class="org.jasig.cas.authentication.handler.DefaultPasswordEncoder" byName">???? ??? ?

?? ?

デフォルトの検証方法をコメントアウトし、データベースクエリ検証を使用します:

??????

??????

????

?


???
??
????????? ??????? value="userinfo からパスワードを選択 ここで lower(username) = lower ( ?)" />

????

??????

?????


?

---------------これで 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

"
?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 シングル サインアウト フィルター
?????? org.jasig.cas.client.session.SingleSignOutFilter
?
?
??? ??<フィルタ名>CASシングルサインアウトフィルタ
??????/*
? /filter-mapping>

??
?
??????? <フィルタ名>CASFilter
??????<フィルタクラス>org.jasig.cas.client.authentication.AuthenticationFilter
?? ???????
????????????casServerLoginUrl
?????? ???????http://192.168.18.8:8080/cas/login
????????? ???
??????? ??????
???? ??????????サーバー名
?????????http:// 192.168.18.8:8989
??????? ;
?

?
?????? CASFilter
??? ?????/*
?

?
?
?
????????? CAS 検証フィルター
??????? 🎜>??????????
????????? casServerUrlPrefix
???????????????http:// 192.168.18.8:8080/cas
???????
???????
??????????????? パラメータ名>
??????????????? ;param-value>http://192.168.18.8:8989

???????
?

?
??????? ;CAS 検証フィルター
??????/*?

?
?
?
?????? ????
???????????? ???? org.jasig.cas.client.util.HttpServletRequestWrapperFilter
?
?????? ??/*
?





??????CAS アサーション スレッド ローカル フィルタ
??????? -class>org.jasig.cas.client.util.AssertionThreadLocalFilter

??????CAS アサーション スレッド ローカル フィルタ

??????/*
?
?
?
??? index.jsp
? -list>



?

ページは次のとおりです:

<%
AttributePrincipal プリンシパル = (AttributePrincipal)request.getUserPrincipal();???
String username =
%>


ログインに成功しました。これはクライアント 1



ユーザー名: < ユーザー名 % >

http://localhost:8989/Casclient2/index.jsp">クライアント 2 を入力

http://localhost:8080/cas/logout?service=http://localhost:8989/Casclient1/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

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Huawei GT3 ProとGT4の違いは何ですか? Huawei GT3 ProとGT4の違いは何ですか? Dec 29, 2023 pm 02:27 PM

多くのユーザーはスマートウォッチを選ぶときにファーウェイブランドを選択しますが、その中でもファーウェイ GT3pro と GT4 は非常に人気のある選択肢であり、多くのユーザーはファーウェイ GT3pro と GT4 の違いに興味を持っています。 Huawei GT3pro と GT4 の違いは何ですか? 1. 外観 GT4: 46mm と 41mm、材質はガラスミラー + ステンレススチールボディ + 高解像度ファイバーバックシェルです。 GT3pro: 46.6mm および 42.9mm、材質はサファイアガラス + チタンボディ/セラミックボディ + セラミックバックシェルです。 2. 健全な GT4: 最新の Huawei Truseen5.5+ アルゴリズムを使用すると、結果はより正確になります。 GT3pro: ECG 心電図と血管と安全性を追加

修正: Windows 11 で Snipping ツールが機能しない 修正: Windows 11 で Snipping ツールが機能しない Aug 24, 2023 am 09:48 AM

Windows 11 で Snipping Tool が機能しない理由 問題の根本原因を理解すると、適切な解決策を見つけるのに役立ちます。 Snipping Tool が正しく動作しない主な理由は次のとおりです。 フォーカス アシスタントがオンになっている: これにより、Snipping Tool が開かなくなります。破損したアプリケーション: 起動時にスニッピング ツールがクラッシュする場合は、破損している可能性があります。古いグラフィック ドライバー: 互換性のないドライバーは、スニッピング ツールに干渉する可能性があります。他のアプリケーションからの干渉: 実行中の他のアプリケーションが Snipping Tool と競合する可能性があります。証明書の有効期限が切れています: アップグレード プロセス中のエラーにより、この問題が発生する可能性があります。これらの簡単な解決策は、ほとんどのユーザーに適しており、特別な技術知識は必要ありません。 1. Windows および Microsoft Store アプリを更新する

「[Vue 警告]: フィルターを解決できませんでした」エラーを解決する方法 「[Vue 警告]: フィルターを解決できませんでした」エラーを解決する方法 Aug 19, 2023 pm 03:33 PM

「[Vuewarn]:Failedtoresolvefilter」エラーを解決する方法 Vue を使用した開発プロセス中に、「[Vuewarn]:Failedtoresolvefilter」というエラー メッセージが表示されることがあります。このエラー メッセージは通常、テンプレートで未定義のフィルターを使用したときに発生します。この記事では、このエラーを解決する方法を説明し、対応するコード例を示します。 Vue を使用しているとき

iPhoneでApp Storeに接続できないエラーを修正する方法 iPhoneでApp Storeに接続できないエラーを修正する方法 Jul 29, 2023 am 08:22 AM

パート 1: 最初のトラブルシューティング手順 Apple のシステムステータスを確認する: 複雑な解決策を掘り下げる前に、基本から始めましょう。問題はデバイスにあるのではなく、Apple のサーバーがダウンしている可能性があります。 Apple のシステム ステータス ページにアクセスして、AppStore が適切に動作しているかどうかを確認してください。問題があれば、Apple が修正してくれるのを待つしかありません。インターネット接続を確認します。「AppStore に接続できません」問題は接続不良が原因である場合があるため、安定したインターネット接続があることを確認してください。 Wi-Fi とモバイル データを切り替えるか、ネットワーク設定をリセットしてみてください ([一般] > [リセット] > [ネットワーク設定のリセット] > [設定])。 iOS バージョンを更新します。

php提交表单通过后,弹出的对话框怎样在当前页弹出,该如何解决 php提交表单通过后,弹出的对话框怎样在当前页弹出,该如何解决 Jun 13, 2016 am 10:23 AM

php提交表单通过后,弹出的对话框怎样在当前页弹出php提交表单通过后,弹出的对话框怎样在当前页弹出而不是在空白页弹出?想实现这样的效果:而不是空白页弹出:------解决方案--------------------如果你的验证用PHP在后端,那么就用Ajax;仅供参考:HTML code

CAS (中央認証サービス) を介した PHP セキュリティ検証の実装 CAS (中央認証サービス) を介した PHP セキュリティ検証の実装 Jul 24, 2023 pm 12:49 PM

CAS (CentralAuthenticationService) による PHP セキュリティ検証 インターネットの急速な発展に伴い、ユーザー権限管理と本人確認の重要性がますます高まっています。 Web アプリケーションを開発する場合、ユーザー データを保護し、不正アクセスを防止することが重要です。この目標を達成するには、PHP セキュリティ検証に CAS (CentralAuthenticationService) を使用します。 CAS

Java CASの概念とは何ですか Java CASの概念とは何ですか May 03, 2023 pm 09:34 PM

1. 複数のスレッドがリソースに対して CAS 操作を同時に実行すると、1 つのスレッドだけが成功しますが、他のスレッドはブロックされず、他のスレッドは操作が失敗したというシグナルを受信するだけであることを説明します。 CAS が実際には楽観的ロックであることがわかります。 2. AtomInteger コードをたどると、最後に sum.misc.Unsafe が呼び出されることがわかります。 Unsafe という名前を見てください。これは、Java のクラスと可視性ルールの適切な穴を悪用する安全でないクラスです。速度を向上させるために、Unsafe は Java のセキュリティ標準にいくつかの妥協を加えています。 publicfinalnativebooleancompareAndSwapInt(Objec

watch4proとGTのどちらが優れていますか? watch4proとGTのどちらが優れていますか? Sep 26, 2023 pm 02:45 PM

Watch4proとgtはそれぞれ特徴や適用シーンが異なりますが、総合的な機能、高性能、スタイリッシュな外観を重視し、価格は高くてもいいという方にはWatch 4 Proの方が適しているかもしれません。高度な機能要件はなく、バッテリー寿命と手頃な価格を重視する場合は、GT シリーズの方が適しているかもしれません。最終的な選択は、個人のニーズ、予算、好みに基づいて決定する必要がありますが、購入する前に自分のニーズを慎重に検討し、さまざまな製品のレビューや比較を参照して、より情報に基づいた選択を行うことをお勧めします。

See all articles