Mercurial > dive4elements > river
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: |