158                 boolean result = 
false;
   159                 log.trace(
"Starting metadata validation process.");
   161                 String metadataFN = null;
   168                 synchronized (
this) {
   169                         if (StringHelper.isNotEmpty(metadataFN)) {
   170                                 File metadata = 
new File(shib3IdpTempmetadataFolder + metadataFN);
   171                                 File target = 
new File(shib3IdpMetadataFolder + metadataFN.replaceAll(
".{4}\\..{4}$", 
""));
   173                                                 metadataFN.split(
"-" + Shibboleth3ConfService.SHIB3_IDP_SP_METADATA_FILE)[0]);
   178                                 tr.setValidationStatus(GluuValidationStatus.VALIDATION);
   181                                 GluuErrorHandler errorHandler = null;
   182                                 List<String> validationLog = null;
   185                                 } 
catch (Exception e) {
   186                                         tr.setValidationStatus(GluuValidationStatus.VALIDATION_FAILED);
   187                                         tr.setStatus(GluuStatus.INACTIVE);
   188                                         validationLog = 
new ArrayList<String>();
   189                                         validationLog.add(e.getMessage());
   190                                         log.warn(
"Validation of " + tr.getInum() + 
" failed: " + e.getMessage() );
   191                                         tr.setValidationLog(validationLog);
   196                                 if (errorHandler.isValid()) {
   197                                         tr.setValidationLog(errorHandler.getLog());
   198                                         tr.setValidationStatus(GluuValidationStatus.VALIDATION_SUCCESS);
   199                                         if (((!target.exists()) || target.delete()) && (!metadata.renameTo(target))) {
   200                                                 log.error(
"Failed to move metadata file to location:" + target.getAbsolutePath());
   201                                                 tr.setStatus(GluuStatus.INACTIVE);
   203                                                 tr.setSpMetaDataFN(target.getName());
   206                                         tr.setFederation(federation);
   207                                         String idpMetadataFolder = 
appConfiguration.getShibboleth3IdpRootDir() + File.separator
   208                                                         + Shibboleth3ConfService.SHIB3_IDP_METADATA_FOLDER + File.separator;
   209                                         File metadataFile = 
new File(idpMetadataFolder + tr.getSpMetaDataFN());
   212                                         List<String> entityIdList = SAMLMetadataParser.getEntityIdFromMetadataFile(metadataFile);
   213                                         Set<String> entityIdSet = 
new TreeSet<String>();
   214                                         Set<String> duplicatesSet = 
new TreeSet<String>(); 
   215                                         if(entityIdList != null && ! entityIdList.isEmpty()){
   217                                                 for (String entityId : entityIdList) {
   218                                                         if (!entityIdSet.add(entityId)) {
   219                                                                 duplicatesSet.add(entityId);
   225                                         if(! duplicatesSet.isEmpty()){
   226                                                 validationLog = tr.getValidationLog();
   227                                                 if(validationLog != null){
   228                                                         validationLog = 
new LinkedList<String>(validationLog);
   230                                                         validationLog = 
new LinkedList<String>();
   232                                                 validationLog.add(
"This metadata contains multiple instances of entityId: " + Arrays.toString(duplicatesSet.toArray()));
   234                                         tr.setValidationLog(validationLog);
   235                                         tr.setGluuEntityId(entityIdSet);
   236                                         tr.setStatus(GluuStatus.ACTIVE);
   240                                 } 
else if(
appConfiguration.isIgnoreValidation() || errorHandler.isInternalError()){
   241                                         tr.setValidationLog(
new ArrayList<String>(
new HashSet<String>(errorHandler.getLog())));
   242                                         tr.setValidationStatus(GluuValidationStatus.VALIDATION_FAILED);
   243                                         if( (( ! target.exists() ) ||  target.delete()) && ( ! metadata.renameTo(target) )){
   244                                                 log.error(
"Failed to move metadata file to location:" + target.getAbsolutePath());
   245                                                 tr.setStatus(GluuStatus.INACTIVE);
   247                                                 tr.setSpMetaDataFN(target.getName());
   250                                         tr.setFederation(federation);
   251                                         String idpMetadataFolder = 
appConfiguration.getShibboleth3IdpRootDir() + File.separator + Shibboleth3ConfService.SHIB3_IDP_METADATA_FOLDER + File.separator;
   252                                         File metadataFile = 
new File(idpMetadataFolder + tr.getSpMetaDataFN());
   254                                         List<String> entityIdList = SAMLMetadataParser.getEntityIdFromMetadataFile(metadataFile);
   255                                         Set<String> duplicatesSet = 
new TreeSet<String>(); 
   256                                         Set<String> entityIdSet = 
new TreeSet<String>();
   258                                         for (String entityId : entityIdList) {
   259                                                 if (!entityIdSet.add(entityId)) {
   260                                                         duplicatesSet.add(entityId);
   264                                         tr.setGluuEntityId(entityIdSet);
   265                                         tr.setStatus(GluuStatus.ACTIVE);        
   266                                         validationLog = tr.getValidationLog();
   267                                         if(! duplicatesSet.isEmpty()){
   268                                                 validationLog.add(
"This metadata contains multiple instances of entityId: " + Arrays.toString(duplicatesSet.toArray()));
   271                                         if (errorHandler.isInternalError()) {
   272                                             validationLog = tr.getValidationLog();
   274                                             validationLog.add(
"Warning: cannot validate metadata. Check internet connetion ans www.w3.org availability.");
   277                                             for (String warningLogMessage : errorHandler.getLog()) 
   278                                                 validationLog.add(
"Warning: " + warningLogMessage);
   284                                         tr.setValidationLog(
new ArrayList<String>(
new HashSet<String>(errorHandler.getLog())));
   285                                         tr.setValidationStatus(GluuValidationStatus.VALIDATION_FAILED);
   286                                         tr.setStatus(GluuStatus.INACTIVE);
 AppConfiguration appConfiguration
Definition: MetadataValidationTimer.java:60
 
Logger log
Definition: MetadataValidationTimer.java:54
 
GluuSAMLTrustRelationship getTrustByUnpunctuatedInum(String unpunctuated)
Definition: TrustService.java:417
 
TrustService trustService
Definition: MetadataValidationTimer.java:63
 
LinkedBlockingQueue< String > metadataUpdates
Definition: MetadataValidationTimer.java:70
 
Shibboleth3ConfService shibboleth3ConfService
Definition: MetadataValidationTimer.java:66
 
void updateTrustRelationship(GluuSAMLTrustRelationship trustRelationship)
Definition: TrustService.java:111
 
boolean isFederation(GluuSAMLTrustRelationship trustRelationship)
Definition: Shibboleth3ConfService.java:1523
 
GluuErrorHandler validateMetadata(InputStream stream)
Definition: Shibboleth3ConfService.java:1404