私は、クライアント証明書を介してユーザーを認証する小さなJavaアプリケーションを作成しようとしています。 X509証明書をユーザー名にマップする関数の独自の実装を使用するようにTomcatに指示するために、X509UsernameRetrieverClassNameを領域記述子に指定できることをTomcatで見てきました。 機能していないのは、パッケージがあり、org.apache.catalina.realm.X509UsernameRetrieverという関数を実装しているクラスの内部にあっても、指定したクラスが見つからないということだけです。 多くのグーグル・グーグルでは、この問題に対する答えはまだ見つかりませんでした。クラスが見つかりません例外X509UsernameRetrieverClassName Tomcat
助けていただけたら幸いです!
UPDATE:次のように私は(ちょうどテストのために)クラスを実装している
<?xml version="1.0" encoding="UTF-8"?>
<Context path="/">
<Realm className="org.apache.catalina.realm.MemoryRealm"
X509UsernameRetrieverClassName="com.packagename.UserFromCert"
pathname="conf/tomcat_users.xml"/>
</Context>
package com.packgename;
import java.security.cert.X509Certificate;
public class UserFromCert implements org.apache.catalina.realm.X509UsernameRetriever {
@Override
public String getUsername(X509Certificate x509Certificate) {
System.out.println(x509Certificate.getSubjectDN().toString());
System.out.println(x509Certificate.getSubjectX500Principal().getName());
return x509Certificate.getSubjectDN().toString();
}
}
:私はWebアプリケーションのための私のcontext.xmlファイルにこのクラスを設定
私が実装しようとしているクラスは、tomcatライブラリにあります。
Tomcat設定ファイルを含めると便利です。さらに、この実装クラスはどのように含まれていますか?それはWARにありますか? Tomcatのlibディレクトリにありますか? – rmlan
あなたはあなたのクラスをどこに入れましたか?あなたの戦争で? –
私は自分のクラスを直接パッケージに入れました。それは私が推測する戦争の中で風に突き当たるために配備されています。 –