我正在嘗試編寫一個小的Java應用程序,通過客戶端證書對用戶進行身份驗證。 我在Tomcat中看到我可以在領域描述符中指定X509UsernameRetrieverClassName來告訴tomcat使用我自己的將X509證書映射到用戶名的函數的實現。 唯一不起作用的是它沒有找到我指定的類,即使我有一個包並且直接在實現函數org.apache.catalina.realm.X509UsernameRetriever的類中。 谷歌搜索後,我仍然沒有找到任何答案這個問題。類未找到異常X509UsernameRetrieverClassName Tomcat
任何幫助,將不勝感激!
UPDATE:
我配置這個類我context.xml文件爲web應用程序:
<?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();
}
}
我試圖實現的類是在tomcat庫中。
如果包含Tomcat配置文件,這可能會有幫助。另外,這個實施課程是如何包含的?它是否在戰爭?它在Tomcat的lib目錄中嗎? – rmlan
你把你的課放在哪裏?在你的戰爭中? –
我把我的課程直接放在包裏。它被部署到戰爭內的tomcat我猜。 –