1

アプリで phpCAS (v 1.3.2) を使用しています。ユーザーが他の参加 SSO アプリによってログアウトされているかどうかを判断するために、CAS サーバーに対して定期的なチェックを行いたいと考えていました。ただし、phpCAS::checkAuthentication() または phpCAS::forceAuthentication() を実行すると、他のアプリがすでにログアウトしていたり​​、CAS サーバーのログアウト URL/リンクで直接ログアウトしたりしても、常に認証済みが返されます。ローカル セッションがまだ存在していることが原因であることがわかりました。そのため、サーバーに対してチェックを行う必要はありません。このセッションを破棄するのは他のアプリの責任ですか?

もう 1 つの方法は完全に機能しています。つまり、自分のアプリ (w/c では phpCAS を使用) でログアウトすると、他の参加している sso アプリやサーバーのポータルでもログオフされます。ちなみに、私は CAS ライブラリが提供するすべての例を試しました。どれも機能しませんでした。

何が欠けていますか?

4

1 に答える 1

2

CAS サーバーをアクティブにチェックする代わりに、ユーザーがログアウトしたという CAS サーバーからの通知をリッスンする必要があります。これを行うには、シングル サインアウトを実装する必要があります。phpCAS でこれを行う方法の例があります:phpCAS::handleLogoutRequests(false);への呼び出しの前に、ログイン スクリプトに追加するだけphpCAS::forceAuthentication()です。

于 2013-11-11T16:15:28.610 に答える