diff options
| author | Bojan Suzic <bojan.suzic@iaik.tugraz.at> | 2014-02-06 18:29:23 +0100 | 
|---|---|---|
| committer | Bojan Suzic <bojan.suzic@iaik.tugraz.at> | 2014-02-06 18:29:23 +0100 | 
| commit | 4c104d5d8349195007d19a13ed54426f9fe7b49a (patch) | |
| tree | 2e14c5c647f394b3d5b333e34f357c4bac4d9351 /id/server/idserverlib/src/main | |
| parent | 6d87d9ac833d061e38f67d2cdbe33f1f2d24646d (diff) | |
| download | moa-id-spss-4c104d5d8349195007d19a13ed54426f9fe7b49a.tar.gz moa-id-spss-4c104d5d8349195007d19a13ed54426f9fe7b49a.tar.bz2 moa-id-spss-4c104d5d8349195007d19a13ed54426f9fe7b49a.zip | |
iml
Diffstat (limited to 'id/server/idserverlib/src/main')
2 files changed, 96 insertions, 4 deletions
| diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/AuthenticationRequest.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/AuthenticationRequest.java index 7e80273ca..1971fe12d 100644 --- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/AuthenticationRequest.java +++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/AuthenticationRequest.java @@ -2,9 +2,16 @@ package at.gv.egovernment.moa.id.protocols.stork2;  import at.gv.egovernment.moa.id.auth.data.AuthenticationSession;  import at.gv.egovernment.moa.id.auth.exception.MOAIDException; +import at.gv.egovernment.moa.id.auth.stork.VelocityProvider;  import at.gv.egovernment.moa.id.moduls.IAction;  import at.gv.egovernment.moa.id.moduls.IRequest;  import at.gv.egovernment.moa.logging.Logger; +import edu.emory.mathcs.backport.java.util.Collections; +import eu.stork.peps.auth.commons.*; +import eu.stork.peps.auth.engine.STORKSAMLEngine; +import eu.stork.peps.exceptions.STORKSAMLEngineException; +import org.apache.commons.io.IOUtils; +import org.apache.velocity.Template;  import org.apache.velocity.VelocityContext;  import org.apache.velocity.app.VelocityEngine;  import org.apache.velocity.runtime.RuntimeConstants; @@ -14,12 +21,11 @@ import javax.servlet.ServletOutputStream;  import javax.servlet.http.HttpServletRequest;  import javax.servlet.http.HttpServletResponse;  import javax.servlet.http.HttpSession; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.io.OutputStreamWriter; -import java.io.Writer; +import java.io.*; +import java.util.ArrayList;  import java.util.HashMap;  import eu.stork.peps.auth.engine.SAMLEngine; +import sun.rmi.runtime.Log;  /**   * @author bsuzic @@ -40,6 +46,7 @@ public class AuthenticationRequest implements IAction {          Logger.debug("Starting AuthenticationRequest");          //AuthenticationServer.getInstance().startSTORKAuthentication(httpReq, httpResp, moasession);          Logger.debug("Http Response: " + httpResp.toString() + ", "); +        Logger.debug("Remote user: " + httpReq.getRemoteAddr());          Logger.debug("Moa session: " + moasession.toString() + " " + moasession.getOAURLRequested() + " " + moasession.getPublicOAURLPrefix() + " " + moasession.getAction() + " " + moasession.getIdentityLink().getName() + " " + moasession.getTarget());          httpResp.reset();          //httpResp.addHeader("Location", "http:/www.google.com"); @@ -82,6 +89,90 @@ public class AuthenticationRequest implements IAction {          //httpResp.setStatus(200);          //VPEPSInboundPostHandler +        // - prepare attribute list +        PersonalAttributeList attributeList = new PersonalAttributeList(); + +        STORKAuthnResponse authnResponse = new STORKAuthnResponse(); +        authnResponse.setCountry("AT"); + + +        try { + +        IPersonalAttributeList moaAttrList =  moasession.getStorkAttributes(); + +        for (PersonalAttribute personalAttribute : moaAttrList) { +            Logger.info("Personal attribute found: " + personalAttribute.getName() + personalAttribute.getStatus()); +            if (personalAttribute.getValue().size() > 0) { +                for (String value : personalAttribute.getValue()) { +                    Logger.info("     Value found: " + value); +                } +            } +        } + +        } catch (Exception e) { +            Logger.error("Exception, attributes: " + e.getMessage()); +        } + +        PersonalAttribute newAttribute = new PersonalAttribute(); +        newAttribute.setName("eIdentifier"); +        newAttribute.setValue(new ArrayList<String>(Collections.singletonList("xxxxxxxxxxxxxxx"))); +        attributeList.add(newAttribute); +        authnResponse.setPersonalAttributeList(attributeList); + + +        try { +            //Get SAMLEngine instance +            STORKSAMLEngine engine = STORKSAMLEngine.getInstance("incoming"); +            Logger.debug("Starting generation of SAML response"); +            authnResponse = engine.generateSTORKAuthnResponse(((STORKAuthnRequestDEL)req).getStorkAuthnRequest(),authnResponse,httpReq.getRemoteAddr(),false); +            //generateSAML Token +            Logger.info("SAML response succesfully generated!"); +        }catch(STORKSAMLEngineException e){ +            Logger.error("Failed to generate STORK SAML Response", e); +            throw new MOAIDException("stork.05", null); +        } + +        Logger.info("STORK SAML Response message succesfully generated "); +        Logger.debug("STORK response: "); + +        Logger.debug("authn response string: " + authnResponse.toString()); + +        String statusCodeValue = authnResponse.getStatusCode(); +        Logger.debug("authn status code value: " + statusCodeValue); + +        try { +            Logger.debug("authn saml:" + IOUtils.toString(authnResponse.getTokenSaml())); + +        } catch (IOException e) { +            e.printStackTrace(); +        } + +        try { +            VelocityEngine velocityEngine = VelocityProvider.getClassPathVelocityEngine(); +            Template template = velocityEngine.getTemplate("/resources/templates/stork2_postbinding_template.html"); +            VelocityContext context = new VelocityContext(); +            //Logger.info("Putting saml token in response: " + org.bouncycastle.util.encoders.Base64.decode(context.get("SAMLResponse").toString())); + +            context.put("SAMLResponse", IOUtils.toString(authnResponse.getTokenSaml())); +            Logger.info("Putting saml token in response: " + org.bouncycastle.util.encoders.Base64.decode(context.get("SAMLResponse").toString())); + +            Logger.info("Putting assertion consumer url as action: " + ((STORKAuthnRequestDEL)req).getStorkAuthnRequest().getAssertionConsumerServiceURL()); +            context.put("action", ((STORKAuthnRequestDEL) req).getStorkAuthnRequest().getAssertionConsumerServiceURL()); +            StringWriter writer = new StringWriter(); +            template.merge(context, writer); + +            httpResp.getOutputStream().write(writer.toString().getBytes()); + +        } catch (Exception e) { +            Logger.error("Velocity error: " + e.getMessage()); +        } + +        HttpSession httpSession = httpReq.getSession(); +        httpSession.setAttribute("STORKSessionID", "12345"); +        Logger.info("Status code: " + authnResponse.getStatusCode()); + + +          return "12345"; // AssertionId      } diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/STORKProtocol.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/STORKProtocol.java index 2e42a0d75..9564afa27 100644 --- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/STORKProtocol.java +++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/STORKProtocol.java @@ -153,6 +153,7 @@ public class STORKProtocol implements IModulInfo, MOAIDAuthConstants {          Logger.error("spi " + authnRequest.getSpInstitution()); +        STORK2Request.setSTORKAuthnRequest(authnRequest);          return STORK2Request;      } | 
