This commit is contained in:
MaxKey
2022-04-07 20:34:26 +08:00
parent 0307d8752c
commit e0e517d694
8 changed files with 127 additions and 84 deletions

View File

@@ -17,10 +17,13 @@
package org.maxkey.web.apps.contorller;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.security.KeyStore;
import java.security.cert.X509Certificate;
import org.apache.commons.lang3.StringUtils;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.CloseableHttpClient;
@@ -83,7 +86,6 @@ public class SAML20DetailsController extends BaseAppContorller {
AppsSAML20Details saml20Details=saml20DetailsService.getAppDetails(id , false);
decoderSecret(saml20Details);
saml20Details.transIconBase64();
//modelAndView.addObject("model",saml20Details);
//modelAndView.addObject("authzURI",applicationConfig.getAuthzUri());
return new Message<AppsSAML20Details>(saml20Details).buildResponse();
}
@@ -142,60 +144,57 @@ public class SAML20DetailsController extends BaseAppContorller {
}
}
//////////////////////////////
protected AppsSAML20Details transform(AppsSAML20Details samlDetails) throws Exception{
super.transform(samlDetails);
if(null==samlDetails.getFileType()||samlDetails.getFileType().equals("certificate")){//certificate file
try {
if (null!=samlDetails.getMetaFile()&&!samlDetails.getMetaFile().isEmpty()) {
InputStream isCert = samlDetails.getMetaFile().getInputStream();
X509Certificate trustCert = X509CertUtils.loadCertFromInputStream(isCert);
samlDetails.setTrustCert(trustCert);
isCert.close();
}
} catch (IOException e) {
_logger.error("read certificate file error .", e);
throw new Exception("read certificate file error", e);
if(StringUtils.isNotBlank(samlDetails.getFileType())){
if(StringUtils.isNotBlank(samlDetails.getMetaFileId())) {
ByteArrayInputStream bArrayInputStream = new ByteArrayInputStream(
fileUploadService.get(samlDetails.getMetaFileId()).getUploaded());;
if(samlDetails.getFileType().equals("certificate")){//certificate file
try {
X509Certificate trustCert = X509CertUtils.loadCertFromInputStream(bArrayInputStream);
samlDetails.setTrustCert(trustCert);
} catch (IOException e) {
_logger.error("read certificate file error .", e);
throw new Exception("read certificate file error", e);
}
}else if(samlDetails.getFileType().equals("metadata_file")){//metadata file
samlDetails = resolveMetaData(samlDetails,bArrayInputStream);
}
}
if(samlDetails.getFileType().equals("metadata_url")
&&StringUtils.isNotBlank(samlDetails.getMetaUrl())){//metadata url
CloseableHttpClient httpClient = HttpClients.createDefault();
HttpPost post = new HttpPost(samlDetails.getMetaUrl());
CloseableHttpResponse response = httpClient.execute(post);
samlDetails = resolveMetaData(samlDetails,response.getEntity().getContent());;
response.close();
httpClient.close();
}
if(samlDetails.getTrustCert()!=null) {
samlDetails.setCertSubject(samlDetails.getTrustCert().getSubjectDN().getName());
samlDetails.setCertExpiration(samlDetails.getTrustCert().getNotAfter().toString());
samlDetails.setCertIssuer(X509CertUtils.getCommonName(samlDetails.getTrustCert().getIssuerX500Principal()));
KeyStore keyStore = KeyStoreUtil.clone(idpKeyStoreLoader.getKeyStore(),idpKeyStoreLoader.getKeystorePassword());
KeyStore trustKeyStore = null;
if (!samlDetails.getEntityId().equals("")) {
trustKeyStore = KeyStoreUtil.importTrustCertificate(keyStore,samlDetails.getTrustCert(), samlDetails.getEntityId());
} else {
trustKeyStore = KeyStoreUtil.importTrustCertificate(keyStore,samlDetails.getTrustCert());
}
byte[] keyStoreByte = KeyStoreUtil.keyStore2Bytes(trustKeyStore,idpKeyStoreLoader.getKeystorePassword());
// store KeyStore content
samlDetails.setKeyStore(keyStoreByte);
}
}else if(samlDetails.getFileType().equals("metadata_file")){//metadata file
if (null!=samlDetails.getMetaFile()&&!samlDetails.getMetaFile().isEmpty()) {
samlDetails = resolveMetaData(samlDetails,samlDetails.getMetaFile().getInputStream());
}
}else if(samlDetails.getFileType().equals("metadata_url")){//metadata url
CloseableHttpClient httpClient = HttpClients.createDefault();
HttpPost post = new HttpPost(samlDetails.getMetaUrl());
CloseableHttpResponse response = httpClient.execute(post);
samlDetails = resolveMetaData(samlDetails,response.getEntity().getContent());;
response.close();
httpClient.close();
}
if(samlDetails.getTrustCert()!=null) {
samlDetails.setCertSubject(samlDetails.getTrustCert().getSubjectDN().getName());
samlDetails.setCertExpiration(samlDetails.getTrustCert().getNotAfter().toString());
samlDetails.setCertIssuer(X509CertUtils.getCommonName(samlDetails.getTrustCert().getIssuerX500Principal()));
KeyStore keyStore = KeyStoreUtil.clone(idpKeyStoreLoader.getKeyStore(),idpKeyStoreLoader.getKeystorePassword());
KeyStore trustKeyStore = null;
if (!samlDetails.getEntityId().equals("")) {
trustKeyStore = KeyStoreUtil.importTrustCertificate(keyStore,samlDetails.getTrustCert(), samlDetails.getEntityId());
} else {
trustKeyStore = KeyStoreUtil.importTrustCertificate(keyStore,samlDetails.getTrustCert());
}
byte[] keyStoreByte = KeyStoreUtil.keyStore2Bytes(trustKeyStore,idpKeyStoreLoader.getKeystorePassword());
// store KeyStore content
samlDetails.setKeyStore(keyStoreByte);
}
return samlDetails;
}