Welcome to the WSO2 Identity Server source code! For info on working with the WSO2 Identity Server repository and contributing code, click the link below.
Describe the issue:
When multiple requests attempt to simultaneously fetch the Certificate Revocation List (CRL) from the web during the x509 certificate authentication's CRL validation [1], problematic issues arise.
This results in a delay in the process, leading to the necessity of a server startup. As multiple calls come in, the following error is thrown during the initial request processing,
{org.wso2.carbon.identity.x509Certificate.validation.CertificateValidationUtil} - Error when getting the X509 CRL for certificate: 85078622056932698594984361040489148362 org.wso2.carbon.identity.x509Certificate.validation.CertificateValidationException: CRL Url is malformed
at org.wso2.carbon.identity.x509Certificate.validation.CertificateValidationUtil.downloadCRLFromWeb(CertificateValidationUtil.java:681)
at org.wso2.carbon.identity.x509Certificate.validation.CertificateValidationUtil.getRevocationStatus(CertificateValidationUtil.java:598)
at org.wso2.carbon.identity.x509Certificate.validation.validator.CRLValidator.checkRevocationStatus(CRLValidator.java:56)
at org.wso2.carbon.identity.x509Certificate.validation.service.RevocationValidationManagerImpl.isRevoked(RevocationValidationManagerImpl.java:85)
at org.wso2.carbon.identity.x509Certificate.validation.service.RevocationValidationManagerImpl.verifyRevocationStatus(RevocationValidationManagerImpl.java:63)
at org.wso2.carbon.identity.authenticator.x509Certificate.X509CertificateUtil.isCertificateRevoked(X509CertificateUtil.java:392)
at org.wso2.carbon.identity.authenticator.x509Certificate.X509CertificateUtil.validateCertificate(X509CertificateUtil.java:195)
at org.wso2.carbon.identity.authenticator.x509Certificate.X509CertificateAuthenticator.addOrValidateCertificate(X509CertificateAuthenticator.java:665)
at org.wso2.carbon.identity.authenticator.x509Certificate.X509CertificateAuthenticator.processAuthenticationResponse(X509CertificateAuthenticator.java:560)
Hence, it is crucial to prevent the submission of multiple requests and avoid adding them to the cache multiple times during the initial request processing.
How to reproduce:
Set up x509 Certificate with CRL validation [2].
Send multiple requests concurrently when the cached value is not available.
Expected behaviour:
Multiple requests must not be sent when the cache is unavailable while the initial request is processing.
Environment information (Please complete the following information; remove any unnecessary fields) :
Describe the issue: When multiple requests attempt to simultaneously fetch the Certificate Revocation List (CRL) from the web during the x509 certificate authentication's CRL validation [1], problematic issues arise. This results in a delay in the process, leading to the necessity of a server startup. As multiple calls come in, the following error is thrown during the initial request processing,
Hence, it is crucial to prevent the submission of multiple requests and avoid adding them to the cache multiple times during the initial request processing.
How to reproduce:
Expected behaviour: Multiple requests must not be sent when the cache is unavailable while the initial request is processing.
Environment information (Please complete the following information; remove any unnecessary fields) :