This commit is contained in:
Crystal.Sea
2020-09-16 23:17:24 +08:00
parent 5b679a3f42
commit 18e1ddaff0
7 changed files with 20 additions and 14 deletions

View File

@@ -23,6 +23,7 @@ import javax.servlet.http.HttpServletResponse;
import org.apache.commons.lang.Validate;
import org.maxkey.authz.saml.common.TrustResolver;
import org.maxkey.authz.saml20.metadata.MetadataGenerator;
import org.maxkey.constants.ContentType;
import org.maxkey.crypto.keystore.KeyStoreLoader;
import org.maxkey.domain.Saml20Metadata;
import org.maxkey.web.WebContext;
@@ -68,11 +69,14 @@ public class MetadataEndpoint {
private Saml20Metadata saml20Metadata;
private Credential signingCredential;
public static String IDP_METADATA_PREFIX = "Idp_Metadata_";
@RequestMapping(value = "/{appid}.xml",produces = "application/xml")
public ModelAndView metadata(HttpServletRequest request,
HttpServletResponse response, @PathVariable("appid") String appId) {
response.setContentType(ContentType.APPLICATION_XML_UTF8);
appId = appId.substring(IDP_METADATA_PREFIX.length(), appId.length());
if(signingCredential==null){
TrustResolver trustResolver = new TrustResolver();
CredentialResolver credentialResolver=(CredentialResolver)trustResolver.buildKeyStoreCredentialResolver(
@@ -111,7 +115,7 @@ public class MetadataEndpoint {
descriptor.getSingleLogoutServices().add(metadataGenerator.getSingleLogoutService(WebContext.getHttpContextPath()+"/logout",null));
descriptor.getManageNameIDServices().add(metadataGenerator.getManageNameIDService(WebContext.getHttpContextPath()+"/saml/metadata/"+appId));
descriptor.getManageNameIDServices().add(metadataGenerator.getManageNameIDService(WebContext.getHttpContextPath()+"/saml/metadata/"+IDP_METADATA_PREFIX+appId+".xml"));
descriptor.getKeyDescriptors().add(metadataGenerator.generateEncryptionKeyDescriptor(signingCredential));
@@ -151,8 +155,8 @@ public class MetadataEndpoint {
String entityDescriptorXml=XMLHelper.prettyPrintXML(metadataGenerator.marshallerMetadata(entityDescriptor));
logger.debug("EntityDescriptor element XML : \\n");
logger.debug(entityDescriptorXml);
logger.trace("EntityDescriptor element XML : \\n");
logger.trace(entityDescriptorXml);
ModelAndView mv = new ModelAndView("trusts/saml_v20_metadata");
mv.addObject("metadata", entityDescriptorXml);