1 /*
2 * Copyright 2005-2007 The Kuali Foundation
3 *
4 *
5 * Licensed under the Educational Community License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
8 *
9 * http://www.opensource.org/licenses/ecl2.php
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 */
17 package org.kuali.rice.core.security.credentials;
18
19 /**
20 * Inteface for abstracting out how we obtain credentials to access secure
21 * applications across the bus.
22 *
23 * @author Kuali Rice Team (rice.collab@kuali.org)
24 * @since 0.9
25 */
26 public interface CredentialsSource {
27
28 /**
29 * Defines the types of Credentials that the system is willing to accept.
30 * These should coincide with what Acegi is willing to accept.
31 */
32 public static enum CredentialsType {
33 CAS, USERNAME_PASSWORD, JAAS, X509
34 }
35
36 /**
37 * Returns the supported CredentialsType. This should never be null.
38 *
39 * @return the supported credentials type.
40 */
41 CredentialsType getSupportedCredentialsType();
42
43 /**
44 * Returns the SecurityContext which should have the proper credentials to
45 * give to any system requiring credentials. This class has no guarantees
46 * what a user will do with the credentials and should thus always return a
47 * thread-safe version.
48 *
49 * @param serviceDefinition The Service Definition for which we want
50 * credentials for.
51 * @return the credentials, or null if credentials could not be obtained.
52 */
53 Credentials getCredentials(String serviceEndpoint);
54 }