First cut at a protocol handler for federal e-auth.
[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 the id of the name format that should be used in authentication assertions issued to this
56          * {@link RelyingParty}.
57          * 
58          * @return the id for the format
59          */
60         public String getHSNameFormatId();
61
62         /**
63          * Returns a boolean indication of whether this {@link RelyingParty}is running &lt;= Shibboleth v1.1. Used to
64          * ensure backward compatibility.
65          */
66         public boolean isLegacyProvider();
67
68         /**
69          * Returns the location of the Shibboleth Attribute Authority that should answer requests for this
70          * {@link RelyingParty}.
71          * 
72          * @return the URL
73          */
74         public URL getAAUrl();
75
76         /**
77          * The authentication method that should be included in assertions to the {@link RelyingParty}, if one is not found
78          * in HTTP request headers.
79          * 
80          * @return the identifier for the method
81          */
82         public URI getDefaultAuthMethod();
83
84         /**
85          * A boolean indication of whether internal errors should be transmitted to this {@link RelyingParty}
86          */
87         public boolean passThruErrors();
88
89         /**
90          * A boolean indication of whether attributes should be pushed without regard for the profile (POST vs. Artifact).
91          * This should be be mutually exclusive with forceAttributeNoPush().
92          */
93         public boolean forceAttributePush();
94
95         /**
96          * A boolean indication of whether attributes should be NOT pushed without regard for the profile (POST vs.
97          * Artifact).
98          */
99         public boolean forceAttributeNoPush();
100
101         /**
102          * A boolean indication of whether the default SSO browser profile should be POST or Artifact. "true" indicates POST
103          * and "false" indicates Artifact.
104          */
105         public boolean defaultToPOSTProfile();
106
107         /**
108          * A boolean indication of whether assertions issued to this Relying Party should be digitall signed (This is in
109          * addition to profile-specific signing).
110          */
111         public boolean wantsAssertionsSigned();
112
113         /**
114          * Returns the type of SAML Artifact that this appropriate for use with this Relying Party.
115          */
116         public int getPreferredArtifactType();
117
118         /**
119          * Returns thhe default "TARGET" attribute to be used with the artifact profile or null if none is specified.
120          */
121         public String getDefaultTarget();
122 }