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

View File

@ -73,6 +73,7 @@ public class SAML20DetailsController extends BaseAppContorller {
AppsSAML20Details saml20Details=new AppsSAML20Details(); AppsSAML20Details saml20Details=new AppsSAML20Details();
saml20Details.setSecret(ReciprocalUtils.generateKey("")); saml20Details.setSecret(ReciprocalUtils.generateKey(""));
saml20Details.setProtocol(ConstantsProtocols.SAML20); saml20Details.setProtocol(ConstantsProtocols.SAML20);
saml20Details.setId(saml20Details.generateId());
modelAndView.addObject("model",saml20Details); modelAndView.addObject("model",saml20Details);
return modelAndView; return modelAndView;

View File

@ -49,6 +49,7 @@ public class TokenBasedDetailsController extends BaseAppContorller {
public ModelAndView forwardAdd() { public ModelAndView forwardAdd() {
ModelAndView modelAndView=new ModelAndView("apps/tokenbased/appAdd"); ModelAndView modelAndView=new ModelAndView("apps/tokenbased/appAdd");
AppsTokenBasedDetails tokenBasedDetails =new AppsTokenBasedDetails(); AppsTokenBasedDetails tokenBasedDetails =new AppsTokenBasedDetails();
tokenBasedDetails.setId(tokenBasedDetails.generateId());
tokenBasedDetails.setProtocol(ConstantsProtocols.TOKENBASED); tokenBasedDetails.setProtocol(ConstantsProtocols.TOKENBASED);
tokenBasedDetails.setSecret(ReciprocalUtils.generateKey(ReciprocalUtils.Algorithm.AES)); tokenBasedDetails.setSecret(ReciprocalUtils.generateKey(ReciprocalUtils.Algorithm.AES));
tokenBasedDetails.setAlgorithmKey(tokenBasedDetails.getSecret()); tokenBasedDetails.setAlgorithmKey(tokenBasedDetails.getSecret());

View File

@ -8,8 +8,8 @@ config.server.name=http://${config.server.domain.sub}
config.server.prefix.uri=${config.server.name}:9521/maxkey-mgt config.server.prefix.uri=${config.server.name}:9521/maxkey-mgt
#default.uri #default.uri
config.server.default.uri=${config.server.prefix.uri}/main config.server.default.uri=${config.server.prefix.uri}/main
config.maxkey.uri=${config.server.name}/maxkey config.maxkey.uri=https://${config.server.domain.sub}/maxkey
#InMemory 0 , jdbc 1, Redis 2 #InMemory 0 , Redis 2
config.server.persistence=0 config.server.persistence=0
#identity #identity
config.identity.kafkasupport=false config.identity.kafkasupport=false

View File

@ -136,8 +136,8 @@
<th><@locale code="apps.saml.fileType" /></th> <th><@locale code="apps.saml.fileType" /></th>
<td> <td>
<select id="fileType" name="fileType" class="form-control" > <select id="fileType" name="fileType" class="form-control" >
<option value="certificate" selected><@locale code="apps.saml.fileType.certificate" /></option> <option value="certificate"><@locale code="apps.saml.fileType.certificate" /></option>
<option value="metadata"><@locale code="apps.saml.fileType.metadata" /></option> <option value="metadata" selected><@locale code="apps.saml.fileType.metadata" /></option>
</select> </select>
<b class="orange">*</b><label for="fileType"></label> <b class="orange">*</b><label for="fileType"></label>
</td> </td>

View File

@ -52,7 +52,7 @@
</td> </td>
<td></td> <td></td>
<td > <td >
<a target="_blank" href="${maxKeyURI}/metadata/saml20/${model.id}.xml"> SAML MetaData</a> <a target="_blank" href="${maxKeyURI}/metadata/saml20/Idp_Metadata_${model.id}.xml"> SAML MetaData</a>
</td> </td>
</tr> </tr>
<tr> <tr>

View File

@ -147,14 +147,14 @@ config.saml.v20.sp.keystore=classpath\:config/samlClientKeystore.jks
config.saml.v20.sp.issuing.entity.id=client.maxkey.org config.saml.v20.sp.issuing.entity.id=client.maxkey.org
#Saml v20 METADATA #Saml v20 METADATA
config.saml.v20.metadata.orgName=maxkey config.saml.v20.metadata.orgName=MaxKeyTop
config.saml.v20.metadata.orgDisplayName=maxkey config.saml.v20.metadata.orgDisplayName=MaxKeyTop
config.saml.v20.metadata.orgURL=https://github.com/shimingxy/MaxKey config.saml.v20.metadata.orgURL=https://www.maxkey.top
config.saml.v20.metadata.contactType=technical config.saml.v20.metadata.contactType=technical
config.saml.v20.metadata.company=maxkey config.saml.v20.metadata.company=MaxKeyTop
config.saml.v20.metadata.givenName=maxkey config.saml.v20.metadata.givenName=maxkey
config.saml.v20.metadata.surName=maxkey config.saml.v20.metadata.surName=maxkey
config.saml.v20.metadata.emailAddress=shimingxy@163.com config.saml.v20.metadata.emailAddress=maxkeysupport@163.com
config.saml.v20.metadata.telephoneNumber=4008981111 config.saml.v20.metadata.telephoneNumber=4008981111
############################################################################ ############################################################################