2013-06-26 4 views
1

Java로 SAML SP를 구현합니다.
SAML 응답의 인증서를 확인하기 위해
SAML 응답에서 X509Certificate 요소를 추출하고 미리 IDP 인증서를 업로드 한 Java 키 저장소 파일에 대해 유효성을 검사합니다.
인증 경로 유효성 검사

X509Certificate certFromResponse = //extract from SAML response 
KeyStore keyStore = getKS(); 
PKIXParameters params = new PKIXParameters(keyStore); 
params.setRevocationEnabled(false); 
CertPath certPath = 
certificateFactory.generateCertPath(Arrays.asList(certFromResponse)); 
CertPathValidator certPathValidator = CertPathValidator.getInstance(CertPathValidator.getDefaultType()); 
CertPathValidatorResult result = certPathValidator.validate(certPath, params); 

이 루트 CA에있는 인증서 잘 작동 :
나는 인증서의 유효성을 검사하려면 다음 코드를 사용
인증서에 인증서 경로가 있으면 유효성 검사가 실패합니다.
가 수동으로 JKS 파일을 다른 별명을 가진
에 경로에서 모든 인증서를 업로드하는 것입니다 처리하고 다음과 같은리스트로 추출하기위한 가능한 방법 :

List<Certificate> certs = new ArrayList<Certificate>(); 
certs.add(certFromResponse); 
if (keyStore.getCertificate("ALIAS_CA_1") != null) { 
    certs.add(keyStore.getCertificate("ALIAS_CA_1")); 
} 
if (keyStore.getCertificate("ALIAS_CA_2") != null) { 
    certs.add(keyStore.getCertificate("ALIAS_CA_2"); 
} 
... 
CertPath certPath = certificateFactory.generateCertPath(certs); 

더 간단 있는가 그것을하는 방법?
인증서 자체에서 인증서 경로를 추출 할 수 있습니까?

감사합니다.

답변

1

PKIXParameters는 인증 경로를 자동으로 추출하므로 수동으로 수행 할 필요가 없습니다.
모든 인증서를 키 스토어에 업로드하면됩니다.

관련 문제