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