From 5371cce8ad520a49840c37cdf1d952c233f47320 Mon Sep 17 00:00:00 2001 From: Florian Reimair Date: Tue, 5 Jan 2016 11:01:00 +0100 Subject: metadata delivery. draft but working. --- .../eidas/tasks/GenerateAuthnRequestTask.java | 2 + .../modules/eidas/utils/EidasMetaDataServlet.java | 89 ++++++++++++++++++++++ 2 files changed, 91 insertions(+) create mode 100644 id/server/modules/moa-id-module-eIDAS/src/main/java/at/gv/egovernment/moa/id/auth/modules/eidas/utils/EidasMetaDataServlet.java (limited to 'id/server/modules/moa-id-module-eIDAS/src/main') diff --git a/id/server/modules/moa-id-module-eIDAS/src/main/java/at/gv/egovernment/moa/id/auth/modules/eidas/tasks/GenerateAuthnRequestTask.java b/id/server/modules/moa-id-module-eIDAS/src/main/java/at/gv/egovernment/moa/id/auth/modules/eidas/tasks/GenerateAuthnRequestTask.java index 159728e92..c4f7bdae0 100644 --- a/id/server/modules/moa-id-module-eIDAS/src/main/java/at/gv/egovernment/moa/id/auth/modules/eidas/tasks/GenerateAuthnRequestTask.java +++ b/id/server/modules/moa-id-module-eIDAS/src/main/java/at/gv/egovernment/moa/id/auth/modules/eidas/tasks/GenerateAuthnRequestTask.java @@ -106,6 +106,8 @@ public class GenerateAuthnRequestTask extends AbstractAuthServletTask { int qaaLevel = 1; authnRequest.setQaa(qaaLevel); authnRequest.setPersonalAttributeList(pAttList); + String issuer = "http://localhost:12344/moa-id-auth/eidas/metadata"; + authnRequest.setIssuer(issuer); engine.initRequestedAttributes(pAttList); authnRequest = engine.generateEIDASAuthnRequest(authnRequest); diff --git a/id/server/modules/moa-id-module-eIDAS/src/main/java/at/gv/egovernment/moa/id/auth/modules/eidas/utils/EidasMetaDataServlet.java b/id/server/modules/moa-id-module-eIDAS/src/main/java/at/gv/egovernment/moa/id/auth/modules/eidas/utils/EidasMetaDataServlet.java new file mode 100644 index 000000000..dd7671765 --- /dev/null +++ b/id/server/modules/moa-id-module-eIDAS/src/main/java/at/gv/egovernment/moa/id/auth/modules/eidas/utils/EidasMetaDataServlet.java @@ -0,0 +1,89 @@ +/******************************************************************************* + * Copyright 2015 e-SENS project + * + * Licensed under the EUPL, Version 1.1 or - as soon they will be + * approved by the European Commission - subsequent versions of + * the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. + * You may obtain a copy of the Licence at: http://ec.europa.eu/idabc/eupl + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + * implied. + * See the Licence for the specific language governing permissions and + * limitations under the Licence. + *******************************************************************************/ +package at.gv.egovernment.moa.id.auth.modules.eidas.utils; +import iaik.security.ecc.provider.ECCProvider; +import iaik.security.provider.IAIK; + +import java.io.IOException; +import java.security.Security; + +import javax.servlet.ServletException; +import javax.servlet.annotation.WebServlet; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.slf4j.Logger; + +import at.gv.egovernment.moa.id.auth.modules.eidas.exceptions.EIDASEngineException; +import eu.eidas.auth.engine.EIDASSAMLEngine; +import eu.eidas.auth.engine.metadata.MetadataConfigParams; +import eu.eidas.auth.engine.metadata.MetadataGenerator; +import eu.eidas.engine.exceptions.SAMLEngineException; + + +/** + * First version to provide some valid metadata to an asking eIDaS node + */ +@WebServlet("/eidas/metadata") +public class EidasMetaDataServlet extends HttpServlet { + private static final long serialVersionUID = -2129228304760706063L; + private Logger logger = org.slf4j.LoggerFactory.getLogger(EidasMetaDataServlet.class); + /** + * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse + * response) + */ + protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + try { + logger.info("EidasMetaDataServlet GET"); + + String metadata_url = "metadataurl"; + String sp_return_url = "sp_return_url"; + String metaData = generateMetadata(metadata_url, sp_return_url); + + response.setContentType("text/html"); + response.getWriter().print(metaData); + response.flushBuffer(); + } catch (Exception e) { + e.printStackTrace(); + } + } + + public String generateMetadata(String metadata_url, String sp_return_url) throws SAMLEngineException, EIDASEngineException{ + String metadata="invalid metadata"; + + // FIXME workaround!? + Security.removeProvider("IAIK"); + Security.removeProvider("IAIK_ECC"); + + EIDASSAMLEngine engine = SAMLEngineUtils.createSAMLEngine(); + + IAIK.addAsProvider(); + ECCProvider.addAsProvider(true); + + MetadataGenerator generator = new MetadataGenerator(); + MetadataConfigParams mcp=new MetadataConfigParams(); + generator.setConfigParams(mcp); + generator.initialize(engine); + mcp.setEntityID(metadata_url); + generator.addSPRole(); // TODO addIDPRole(); + String returnUrl = sp_return_url; + mcp.setAssertionConsumerUrl(returnUrl); + metadata = generator.generateMetadata(); + return metadata; + } +} -- cgit v1.2.3