KeyCloakサーバーを実行して、SpringBoot-Web RestAPIにアクセスしたいユーザーを認証しています。ただし、認証しようとするとエラーが発生します。
次の作品:
ホワイトラベルエラーページこのアプリケーションには/ errorの明示的なマッピングがないため、これはフォールバックと見なされます。
Spring-Boot出力コンソールでのエラー:
Caused by: Java.lang.ClassNotFoundException: Java.security.acl.Group
at Java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.Java:602) ~[na:na]
at Java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.Java:178) ~[na:na]
at Java.base/Java.lang.ClassLoader.loadClass(ClassLoader.Java:522) ~[na:na]
... 33 common frames omitted
KeyCloakサーバーは、アプリケーションに対するユーザーのセッションがアクティブであることを示しています。ただし、上記のクラスがないため、認証プロセスは完了しません。
いくつかの調査の後、私は自分の問題に対する答えを見つけました。
問題は、Java.security.acl.GroupがJRE 9以降廃止されており、将来のバージョンで削除されるようにマークされていることです。
Java.security.acl.GroupはJava.security.Policyに置き換えられます
私は、このクラスが利用できなくなったように見えるJRE 14でSpring-Bootアプリケーションを実行していました。
したがって、JRE 11を使用するようにSpring-bootアプリケーション(REST-APIをホストする)を変更すると、エラーは解消しました。
注:pom.xml Java version attibute
<Java.version>11</Java.version>
変更する必要があり、EclipseのビルドパスのJDK(IDE私が使用しています) JDKビルドパス
同じ問題に出くわした。
ちなみに、こちらのkeycloak issue trackerで報告されています: https://issues.redhat.com/browse/KEYCLOAK-1369
キークローク11で修正する必要があります。