0859cf4e1cea244fdfe58a043a72c6d9074b0b1e
[java-idp.git] / src / edu / internet2 / middleware / shibboleth / common / RelyingParty.java
1 /*
2  * The Shibboleth License, Version 1. Copyright (c) 2002 University Corporation for Advanced Internet Development, Inc.
3  * All rights reserved Redistribution and use in source and binary forms, with or without modification, are permitted
4  * provided that the following conditions are met: Redistributions of source code must retain the above copyright
5  * notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above
6  * copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials
7  * provided with the distribution, if any, must include the following acknowledgment: "This product includes software
8  * developed by the University Corporation for Advanced Internet Development <http://www.ucaid.edu> Internet2 Project.
9  * Alternately, this acknowledegement may appear in the software itself, if and wherever such third-party
10  * acknowledgments normally appear. Neither the name of Shibboleth nor the names of its contributors, nor Internet2, nor
11  * the University Corporation for Advanced Internet Development, Inc., nor UCAID may be used to endorse or promote
12  * products derived from this software without specific prior written permission. For written permission, please contact
13  * shibboleth@shibboleth.org Products derived from this software may not be called Shibboleth, Internet2, UCAID, or the
14  * University Corporation for Advanced Internet Development, nor may Shibboleth appear in their name, without prior
15  * written permission of the University Corporation for Advanced Internet Development. THIS SOFTWARE IS PROVIDED BY THE
16  * COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND WITH ALL FAULTS. ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
17  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT ARE
18  * DISCLAIMED AND THE ENTIRE RISK OF SATISFACTORY QUALITY, PERFORMANCE, ACCURACY, AND EFFORT IS WITH LICENSEE. IN NO
19  * EVENT SHALL THE COPYRIGHT OWNER, CONTRIBUTORS OR THE UNIVERSITY CORPORATION FOR ADVANCED INTERNET DEVELOPMENT, INC.
20  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
21  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
22  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
23  * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
24  */
25
26 package edu.internet2.middleware.shibboleth.common;
27
28 import java.net.URI;
29 import java.net.URL;
30
31 /**
32  * Defines a relationship between service providers and an identity provider. In Shibboleth parlance, a relying party
33  * represents a SP or group of SPs (perhaps a federation).
34  * 
35  * @author Walter Hoehn
36  */
37 public interface RelyingParty extends ServiceProvider {
38
39         /**
40          * Returns the name of the relying party. If the relying party is a Shibboleth SP (not a group), this function
41          * returns the same thing as {@link #getProviderId}.
42          * 
43          * @return name of the relying party
44          */
45         public String getName();
46
47         /**
48          * Returns the appropriate identity provider to create assertions for this relying party.
49          * 
50          * @return the identity provider
51          */
52         public IdentityProvider getIdentityProvider();
53
54         /**
55          * Returns an array of identifiers for looking up the name mappings to be used when responding to queries from this
56          * {@link RelyingParty}. The array is ordered by the preference that should be given to use of the given name
57          * mappings.
58          * 
59          * @return the ids of the mappers
60          */
61         public String[] getNameMapperIds();
62
63         /**
64          * Returns a boolean indication of whether this {@link RelyingParty}is running &lt;= Shibboleth v1.1. Used to
65          * ensure backward compatibility.
66          */
67         public boolean isLegacyProvider();
68
69         /**
70          * Returns the location of the Shibboleth Attribute Authority that should answer requests for this
71          * {@link RelyingParty}.
72          * 
73          * @return the URL
74          */
75         public URL getAAUrl();
76
77         /**
78          * The authentication method that should be included in assertions to the {@link RelyingParty}, if one is not found
79          * in HTTP request headers.
80          * 
81          * @return the identifier for the method
82          */
83         public URI getDefaultAuthMethod();
84
85         /**
86          * A boolean indication of whether internal errors should be transmitted to this {@link RelyingParty}
87          */
88         public boolean passThruErrors();
89
90         /**
91          * A boolean indication of whether attributes should be pushed without regard for the profile (POST vs. Artifact).
92          * This should be be mutually exclusive with forceAttributeNoPush().
93          */
94         public boolean forceAttributePush();
95
96         /**
97          * A boolean indication of whether attributes should be NOT pushed without regard for the profile (POST vs.
98          * Artifact).
99          */
100         public boolean forceAttributeNoPush();
101
102         /**
103          * A boolean indication of whether the default SSO browser profile should be POST or Artifact. "true" indicates POST
104          * and "false" indicates Artifact.
105          */
106         public boolean defaultToPOSTProfile();
107
108         /**
109          * A boolean indication of whether assertions issued to this Relying Party should be digitall signed (This is in
110          * addition to profile-specific signing).
111          */
112         public boolean wantsAssertionsSigned();
113
114         /**
115          * Returns the type of SAML Artifact that this appropriate for use with this Relying Party.
116          */
117         public int getPreferredArtifactType();
118
119         /**
120          * Returns the default "TARGET" attribute to be used with the artifact profile or null if none is specified.
121          */
122         public String getDefaultTarget();
123
124         /**
125          * Boolean indicator of whether or not the legacy schema hack should be used. Older versions of xerces require
126          * (xsi:type="typens:AttributeValueType") on the attribute value to get around a validation bug.
127          */
128         public boolean wantsSchemaHack();
129 }