annotate gwt-client/src/main/java/org/dive4elements/river/client/server/auth/saml/SamlNamespaceContext.java @ 8839:2c8259176c46

Add configurable time tolerance to SAML ticket validation. This allows e.g. to account for time skew between the ISP and the server this servlet is run on.
author Tom Gottfried <tom@intevation.de>
date Wed, 28 Jun 2017 20:09:53 +0200
parents 7b0db743f074
children
rev   line source
5957
7b0db743f074 Convert some Latin-1 source files to UTF-8
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5938
diff changeset
1 /* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde
5938
231a834d4e28 Add NamespaceContext for SAML handling.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
2 * Software engineering by Intevation GmbH
231a834d4e28 Add NamespaceContext for SAML handling.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
3 *
231a834d4e28 Add NamespaceContext for SAML handling.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
4 * This file is Free Software under the GNU AGPL (>=v3)
231a834d4e28 Add NamespaceContext for SAML handling.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
5 * and comes with ABSOLUTELY NO WARRANTY! Check out the
231a834d4e28 Add NamespaceContext for SAML handling.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
6 * documentation coming with Dive4Elements River for details.
231a834d4e28 Add NamespaceContext for SAML handling.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
7 */
231a834d4e28 Add NamespaceContext for SAML handling.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
8
231a834d4e28 Add NamespaceContext for SAML handling.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
9 package org.dive4elements.river.client.server.auth.saml;
231a834d4e28 Add NamespaceContext for SAML handling.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
10
231a834d4e28 Add NamespaceContext for SAML handling.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
11 import java.util.Iterator;
231a834d4e28 Add NamespaceContext for SAML handling.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
12
231a834d4e28 Add NamespaceContext for SAML handling.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
13 import javax.xml.XMLConstants;
231a834d4e28 Add NamespaceContext for SAML handling.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
14 import javax.xml.namespace.NamespaceContext;
231a834d4e28 Add NamespaceContext for SAML handling.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
15
231a834d4e28 Add NamespaceContext for SAML handling.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
16
231a834d4e28 Add NamespaceContext for SAML handling.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
17 /**
231a834d4e28 Add NamespaceContext for SAML handling.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
18 * The namespace context for SAML documents.
231a834d4e28 Add NamespaceContext for SAML handling.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
19 */
231a834d4e28 Add NamespaceContext for SAML handling.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
20 public class SamlNamespaceContext implements NamespaceContext
231a834d4e28 Add NamespaceContext for SAML handling.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
21 {
231a834d4e28 Add NamespaceContext for SAML handling.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
22 /**
231a834d4e28 Add NamespaceContext for SAML handling.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
23 * The URI of the namespace of SAML assertions.
231a834d4e28 Add NamespaceContext for SAML handling.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
24 */
231a834d4e28 Add NamespaceContext for SAML handling.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
25 public static final String SAML_NS_ASSERT =
231a834d4e28 Add NamespaceContext for SAML handling.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
26 "urn:oasis:names:tc:SAML:1.0:assertion";
231a834d4e28 Add NamespaceContext for SAML handling.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
27
231a834d4e28 Add NamespaceContext for SAML handling.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
28 /**
231a834d4e28 Add NamespaceContext for SAML handling.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
29 * The URI of the namespace of the SAML protocol.
231a834d4e28 Add NamespaceContext for SAML handling.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
30 */
231a834d4e28 Add NamespaceContext for SAML handling.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
31 public static final String SAML_NS_PROTO =
231a834d4e28 Add NamespaceContext for SAML handling.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
32 "urn:oasis:names:tc:SAML:1.0:protocol";
231a834d4e28 Add NamespaceContext for SAML handling.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
33
231a834d4e28 Add NamespaceContext for SAML handling.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
34 /**
231a834d4e28 Add NamespaceContext for SAML handling.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
35 * The URI of the namespace for XML signatures.
231a834d4e28 Add NamespaceContext for SAML handling.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
36 */
231a834d4e28 Add NamespaceContext for SAML handling.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
37 public static final String XML_SIG_NS =
231a834d4e28 Add NamespaceContext for SAML handling.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
38 "http://www.w3.org/2000/09/xmldsig#";
231a834d4e28 Add NamespaceContext for SAML handling.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
39
231a834d4e28 Add NamespaceContext for SAML handling.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
40 /**
231a834d4e28 Add NamespaceContext for SAML handling.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
41 * Final instance to be easily used to avoid creation
231a834d4e28 Add NamespaceContext for SAML handling.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
42 * of instances.
231a834d4e28 Add NamespaceContext for SAML handling.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
43 */
231a834d4e28 Add NamespaceContext for SAML handling.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
44 public static final SamlNamespaceContext INSTANCE =
231a834d4e28 Add NamespaceContext for SAML handling.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
45 new SamlNamespaceContext();
231a834d4e28 Add NamespaceContext for SAML handling.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
46
231a834d4e28 Add NamespaceContext for SAML handling.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
47
231a834d4e28 Add NamespaceContext for SAML handling.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
48 /**
231a834d4e28 Add NamespaceContext for SAML handling.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
49 * The default constructor.
231a834d4e28 Add NamespaceContext for SAML handling.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
50 */
231a834d4e28 Add NamespaceContext for SAML handling.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
51 public SamlNamespaceContext() {
231a834d4e28 Add NamespaceContext for SAML handling.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
52 }
231a834d4e28 Add NamespaceContext for SAML handling.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
53
231a834d4e28 Add NamespaceContext for SAML handling.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
54
231a834d4e28 Add NamespaceContext for SAML handling.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
55 /**
231a834d4e28 Add NamespaceContext for SAML handling.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
56 * @see javax.xml.namespace.NamespaceContext#getNamespaceURI(String)
231a834d4e28 Add NamespaceContext for SAML handling.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
57 * @param prefix The prefix
231a834d4e28 Add NamespaceContext for SAML handling.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
58 * @return The corresponing URI
231a834d4e28 Add NamespaceContext for SAML handling.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
59 */
231a834d4e28 Add NamespaceContext for SAML handling.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
60 public String getNamespaceURI(String prefix) {
231a834d4e28 Add NamespaceContext for SAML handling.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
61
231a834d4e28 Add NamespaceContext for SAML handling.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
62 if (prefix == null) {
231a834d4e28 Add NamespaceContext for SAML handling.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
63 throw new NullPointerException("Null prefix");
231a834d4e28 Add NamespaceContext for SAML handling.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
64 }
231a834d4e28 Add NamespaceContext for SAML handling.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
65
231a834d4e28 Add NamespaceContext for SAML handling.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
66 if ("saml".equals(prefix)) {
231a834d4e28 Add NamespaceContext for SAML handling.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
67 return SAML_NS_ASSERT;
231a834d4e28 Add NamespaceContext for SAML handling.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
68 }
231a834d4e28 Add NamespaceContext for SAML handling.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
69
231a834d4e28 Add NamespaceContext for SAML handling.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
70 if ("samlp".equals(prefix)) {
231a834d4e28 Add NamespaceContext for SAML handling.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
71 return SAML_NS_PROTO;
231a834d4e28 Add NamespaceContext for SAML handling.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
72 }
231a834d4e28 Add NamespaceContext for SAML handling.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
73
231a834d4e28 Add NamespaceContext for SAML handling.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
74 if ("ds".equals(prefix)) {
231a834d4e28 Add NamespaceContext for SAML handling.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
75 return XML_SIG_NS;
231a834d4e28 Add NamespaceContext for SAML handling.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
76 }
231a834d4e28 Add NamespaceContext for SAML handling.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
77
231a834d4e28 Add NamespaceContext for SAML handling.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
78 if ("xml".equals(prefix)) {
231a834d4e28 Add NamespaceContext for SAML handling.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
79 return XMLConstants.XML_NS_URI;
231a834d4e28 Add NamespaceContext for SAML handling.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
80 }
231a834d4e28 Add NamespaceContext for SAML handling.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
81
231a834d4e28 Add NamespaceContext for SAML handling.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
82 return XMLConstants.NULL_NS_URI;
231a834d4e28 Add NamespaceContext for SAML handling.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
83 }
231a834d4e28 Add NamespaceContext for SAML handling.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
84
231a834d4e28 Add NamespaceContext for SAML handling.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
85
231a834d4e28 Add NamespaceContext for SAML handling.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
86 /**
231a834d4e28 Add NamespaceContext for SAML handling.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
87 * @see javax.xml.namespace.NamespaceContext#getPrefix(String)
231a834d4e28 Add NamespaceContext for SAML handling.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
88 * @param uri The URI
231a834d4e28 Add NamespaceContext for SAML handling.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
89 * @return nothing.
231a834d4e28 Add NamespaceContext for SAML handling.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
90 * @throws java.lang.UnsupportedOperationException
231a834d4e28 Add NamespaceContext for SAML handling.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
91 */
231a834d4e28 Add NamespaceContext for SAML handling.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
92 public String getPrefix(String uri) {
231a834d4e28 Add NamespaceContext for SAML handling.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
93 throw new UnsupportedOperationException();
231a834d4e28 Add NamespaceContext for SAML handling.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
94 }
231a834d4e28 Add NamespaceContext for SAML handling.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
95
231a834d4e28 Add NamespaceContext for SAML handling.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
96
231a834d4e28 Add NamespaceContext for SAML handling.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
97 /**
231a834d4e28 Add NamespaceContext for SAML handling.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
98 * @see javax.xml.namespace.NamespaceContext#getPrefixes(java.lang.String)
231a834d4e28 Add NamespaceContext for SAML handling.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
99 * @param uri The URI
231a834d4e28 Add NamespaceContext for SAML handling.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
100 * @return nothing
231a834d4e28 Add NamespaceContext for SAML handling.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
101 * @throws java.lang.UnsupportedOperationException
231a834d4e28 Add NamespaceContext for SAML handling.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
102 */
231a834d4e28 Add NamespaceContext for SAML handling.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
103 public Iterator getPrefixes(String uri) {
231a834d4e28 Add NamespaceContext for SAML handling.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
104 throw new UnsupportedOperationException();
231a834d4e28 Add NamespaceContext for SAML handling.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
105 }
231a834d4e28 Add NamespaceContext for SAML handling.
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
106 }

http://dive4elements.wald.intevation.org