annotate gwt-client/src/main/java/org/dive4elements/river/client/server/auth/saml/Assertion.java @ 5958:a51adfc957bf

Removed obsolete imports.
author Sascha L. Teichmann <teichmann@intevation.de>
date Thu, 09 May 2013 15:36:39 +0200
parents 05da3cfa4054
children 238fc722f87a
rev   line source
5940
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
1 /* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
2 * Software engineering by Intevation GmbH
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
3 *
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
4 * This file is Free Software under the GNU AGPL (>=v3)
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
5 * and comes with ABSOLUTELY NO WARRANTY! Check out the
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
6 * documentation coming with Dive4Elements River for details.
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
7 */
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
8
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
9 package org.dive4elements.river.client.server.auth.saml;
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
10
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
11 import java.text.ParseException;
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
12 import java.text.SimpleDateFormat;
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
13 import java.util.Calendar;
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
14 import java.util.Date;
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
15 import java.util.List;
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
16 import java.util.LinkedList;
5958
a51adfc957bf Removed obsolete imports.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5940
diff changeset
17
5940
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
18 import javax.xml.namespace.QName;
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
19 import javax.xml.xpath.XPathConstants;
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
20
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
21 import org.apache.log4j.Logger;
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
22
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
23 import org.w3c.dom.Element;
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
24 import org.w3c.dom.NodeList;
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
25
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
26 /**
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
27 * Represents a SAML assertion about a user.
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
28 */
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
29 public class Assertion {
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
30
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
31 private static Logger logger = Logger.getLogger(Assertion.class);
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
32
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
33 private Element assertion;
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
34 private LinkedList<String> roles;
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
35 private String user_id;
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
36 private String name_id;
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
37 private String group_id;
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
38 private String group_name;
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
39 private Date notbefore;
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
40 private Date notonorafter;
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
41
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
42 private static final String ATTR_CONT_USER_ID =
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
43 "urn:conterra:names:sdi-suite:policy:attribute:user-id";
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
44 private static final String ATTR_CONT_GROUP_ID =
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
45 "urn:conterra:names:sdi-suite:policy:attribute:group-id";
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
46 private static final String ATTR_CONT_GROUP_NAME =
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
47 "urn:conterra:names:sdi-suite:policy:attribute:group-name";
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
48 private static final String ATTR_CONT_ROLE =
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
49 "urn:conterra:names:sdi-suite:policy:attribute:role";
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
50
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
51
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
52 public Assertion(Element assertion) {
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
53 this.assertion = assertion;
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
54 this.roles = new LinkedList<String>();
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
55 this.parseCondition();
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
56 this.parseAttributeStatement();
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
57 }
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
58
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
59 private void parseCondition() {
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
60 Element conditions = (Element)XPathUtils.xpathNode(this.assertion,
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
61 "saml:Conditions");
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
62 if (conditions == null) {
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
63 logger.error("Cannot find Assertion conditions element");
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
64 return;
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
65 }
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
66
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
67 this.notbefore = parseDateAttribute(conditions, "NotBefore");
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
68 if (this.notbefore == null) {
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
69 logger.warn("Could not extract NotBefore date.");
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
70 }
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
71 this.notonorafter = parseDateAttribute(conditions, "NotOnOrAfter");
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
72 if (this.notonorafter == null) {
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
73 logger.warn("Could not extract NotOnOrAfter date.");
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
74 }
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
75 }
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
76
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
77 private Date parseDateAttribute(Element element, String name) {
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
78 SimpleDateFormat dateformat = new SimpleDateFormat();
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
79 // format should be "yyyy-MM-dd'T'HH:mm:ss.SSSXXX" but that's
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
80 // only available in java 7+. However, parsing without the
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
81 // time-zone yields Date values in the local time-zone,
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
82 // therefore we need to convert to GMT ourselves.
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
83 dateformat.applyPattern("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
84
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
85 String value = element.getAttribute(name);
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
86 try {
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
87 return toGMT(dateformat.parse(value));
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
88 }
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
89 catch(ParseException e) {
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
90 logger.error("Cannot parse Condition attribute "
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
91 + name + " with value " + value
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
92 + " (" + e.getLocalizedMessage() + ")");
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
93 }
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
94 return null;
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
95 }
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
96
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
97 private Date toGMT(Date date) {
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
98 Calendar cal = Calendar.getInstance();
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
99 cal.setTime(date);
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
100 cal.set(Calendar.ZONE_OFFSET, 0);
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
101 cal.set(Calendar.DST_OFFSET, 0);
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
102 return cal.getTime();
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
103 }
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
104
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
105 private void parseAttributeStatement() {
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
106 Element attrstatement = (Element)XPathUtils.xpathNode(this.assertion,
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
107 "saml:AttributeStatement");
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
108 if (attrstatement == null) {
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
109 logger.error("Cannot find Assertion AttributeStatement element");
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
110 return;
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
111 }
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
112
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
113 this.name_id = XPathUtils.xpathString(attrstatement,
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
114 "saml:Subject"
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
115 + "/saml:NameIdentifier");
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
116
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
117 this.user_id = getAttrValue(attrstatement, ATTR_CONT_USER_ID);
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
118 this.group_id = getAttrValue(attrstatement, ATTR_CONT_GROUP_ID);
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
119 this.group_name = getAttrValue(attrstatement, ATTR_CONT_GROUP_NAME);
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
120 this.roles = getAttrValues(attrstatement, ATTR_CONT_ROLE);
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
121 }
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
122
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
123 static Object getAttrObject(Element attrs, String name, QName returnType) {
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
124 return XPathUtils.xpath(attrs,
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
125 "saml:Attribute[@AttributeName='" + name + "']"
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
126 + "/saml:AttributeValue",
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
127 returnType);
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
128 }
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
129
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
130 static String getAttrValue(Element attrs, String name) {
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
131 return (String)getAttrObject(attrs, name, XPathConstants.STRING);
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
132 }
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
133
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
134 static LinkedList<String> getAttrValues(Element attrs, String name) {
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
135 LinkedList<String> strings = new LinkedList<String>();
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
136 NodeList nodes = (NodeList)getAttrObject(attrs, name,
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
137 XPathConstants.NODESET);
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
138 for (int i = 0; i < nodes.getLength(); i++) {
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
139 strings.add(nodes.item(i).getTextContent());
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
140 }
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
141
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
142 return strings;
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
143 }
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
144
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
145 public List<String> getRoles() {
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
146 return this.roles;
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
147 }
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
148
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
149 public String getUserID() {
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
150 return this.user_id;
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
151 }
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
152
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
153 public String getNameID() {
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
154 return this.name_id;
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
155 }
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
156
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
157 public String getGroupID() {
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
158 return this.group_id;
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
159 }
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
160
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
161 public String getGroupName() {
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
162 return this.group_name;
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
163 }
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
164
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
165 public Date getFrom() {
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
166 return this.notbefore;
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
167 }
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
168
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
169 public Date getUntil() {
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
170 return this.notonorafter;
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
171 }
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
172
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
173 /**
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
174 * Returns whether the ticket to which the assertion belongs is
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
175 * valid at the time the method is called. The method returns true,
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
176 * if both dates (notbefore and notonorafter) have been determined
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
177 * successfully and the current date/time is between both.
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
178 * @return Whether the ticket is valid now.
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
179 */
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
180 public boolean isValidNow() {
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
181 Date now = new Date();
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
182 return (this.notbefore != null && this.notonorafter != null
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
183 && now.after(this.notbefore)
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
184 && !this.notonorafter.before(now));
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
185 }
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
186 }
05da3cfa4054 Add new SAML Assertion class based on WAS Assertion.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
187 // vim: set fileencoding=utf-8 ts=4 sw=4 et si tw=80:

http://dive4elements.wald.intevation.org