1. ホーム
  2. Java

CAS 5.1.8でhttpをサポートし、認証されていない認可サービスエラーのプロンプトが表示される問題を解決した。

2022-02-19 18:54:45
<パス

CAS 5.1.8をコンパイルしてwarパッケージを生成し、データベース(Oracle)認証に対応するように設定を変更して、tomcatに配備して、いざ使おうと思ったら、クライアントアプリケーションを開いて、CASにジャンプしても、アカウントのパスワード入力欄がなく、刺々しいエラーメッセージだけが表示されました。

後で検索エンジンで答えを探しに来る人の便宜のために、付録の関連文章を。

Services not authenticated for authorization
The service record for CAS is empty and no service is defined. Applications that wish to authenticate through CAS must be explicitly defined in the service record.

Application Not Authorized to Use CAS

You are not authorized to access the application as your account \
is missing privileges required by the CAS server to authenticate into this service. Please notify your support desk.

The application you attempted to authenticate to is not authorized to use CAS. Contact your CAS administrator to learn how you might register and Contact your CAS administrator to learn how you might register and integrate your application with CAS.

The services registry of CAS is empty and has no service definitions.
Applications that wish to authenticate with CAS must explicitly be defined in the services registry.


最初にこのプロンプトを見たとき、CASがあなたを認証してサービスを提供するために、アプリケーションのアドレスをCASに登録しなければならないのだと思いました。それからしばらく検索してみましたが、誰も触れているのを見ませんでした。基本的には、実際にはhttps/httpの認証が絡むと書いてあります。というのも、CAS 4.*以降、CASはデフォルトでhttpsしかサポートしていないと言われています。今、持っているこのアプリケーションは全てhttpなので、CASが認識しないのです。

古今東西を探し回って、最終的に解決したのは。

Step 1, modify \WEB-INFclassesservices ◇HTTPSandIMAPS◇-10000001.json

"serviceId" : "^(https|imaps)://. *" 
Change to ==>
 "serviceId" : "^(https|http|imaps)://. *",


Step 2: プロジェクト設定ファイル \WEB-INF ³³³.properties を変更します。

cas.tgc.secure=false
cas.serviceRegistry.initFromJson=true #This is really important !!!!!!!!


基本的に、誰も最後の節に言及することはありません。 cas.serviceRegistry.initFromJson=true だから、HTTPSandIMAPS-10000001.jsonをどう変えてもうまくいかず、いつも赤いエラーメッセージが表示されます。そんな時、外国人の方の回答でこの文章を見て、「これが問題のはずだ」と心の中で思いました。なぜ、このような回答が隠されているのでしょうか!?

また、誰かが c:\tomcat\etc\cas\config\cas.properties 一体何なんだ?実は、上の2番目のステップから設定を書いている人がいるだけなんです。設定をapplication.propertiesに一律に書くのではなく、複数個所に分けて書くのが良いようです。それに、CASの実行時に自動生成されるetcディレクトリは、ログを中に入れるんだ。これは、tomcatの中ではなく、tomcatがあるディスクのルートディレクトリに配置されます。パスは変更可能だと思いますが、CASが読み込めるapplication.propertiesに書いた方が全く問題ありません。

このヒントに関しては

httpsに対応しない限り消えないし、単純にこのページを手動で変えればいいだけ。