Source code: org/acegisecurity/providers/UsernamePasswordAuthenticationToken.java
1 /* Copyright 2004, 2005 Acegi Technology Pty Limited
2 *
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 * http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16 package org.acegisecurity.providers;
17
18 import org.acegisecurity.GrantedAuthority;
19
20
21 /**
22 * An {@link org.acegisecurity.Authentication} implementation that is
23 * designed for simple presentation of a username and password.
24 *
25 * <p>
26 * The <code>principal</code> and <code>credentials</code> should be set with
27 * an <code>Object</code> that provides the respective property via its
28 * <code>Object.toString()</code> method. The simplest such
29 * <code>Object</code> to use is <code>String</code>.
30 * </p>
31 *
32 * @author Ben Alex
33 * @version $Id: UsernamePasswordAuthenticationToken.java,v 1.9 2005/11/17 00:55:49 benalex Exp $
34 */
35 public class UsernamePasswordAuthenticationToken
36 extends AbstractAuthenticationToken {
37 //~ Instance fields ========================================================
38
39 private Object credentials;
40 private Object details = null;
41 private Object principal;
42 private GrantedAuthority[] authorities;
43 private boolean authenticated;
44
45 //~ Constructors ===========================================================
46
47 /**
48 * This constructor can be safely used by any code that wishes to create a
49 * <code>UsernamePasswordAuthenticationToken</code>, as the {@link
50 * #isAuthenticated()} will return <code>false</code>.
51 *
52 * @param principal DOCUMENT ME!
53 * @param credentials DOCUMENT ME!
54 */
55 public UsernamePasswordAuthenticationToken(Object principal,
56 Object credentials) {
57 this.principal = principal;
58 this.credentials = credentials;
59 this.authenticated = false;
60 }
61
62 /**
63 * This constructor should only be used by
64 * <code>AuthenticationManager</code> or
65 * <code>AuthenticationProvider</code> implementations that are satisfied
66 * with producing a trusted (ie {@link #isAuthenticated()} =
67 * <code>true</code>) authentication token.
68 *
69 * @param principal
70 * @param credentials
71 * @param authorities
72 */
73 public UsernamePasswordAuthenticationToken(Object principal,
74 Object credentials, GrantedAuthority[] authorities) {
75 this.principal = principal;
76 this.credentials = credentials;
77 this.authorities = authorities;
78 this.authenticated = true;
79 }
80
81 protected UsernamePasswordAuthenticationToken() {
82 throw new IllegalArgumentException("Cannot use default constructor");
83 }
84
85 //~ Methods ================================================================
86
87 public void setAuthenticated(boolean isAuthenticated)
88 throws IllegalArgumentException {
89 if (isAuthenticated) {
90 throw new IllegalArgumentException(
91 "Cannot set this token to trusted - use constructor containing GrantedAuthority[]s instead");
92 }
93
94 this.authenticated = isAuthenticated;
95 }
96
97 public boolean isAuthenticated() {
98 return this.authenticated;
99 }
100
101 public GrantedAuthority[] getAuthorities() {
102 return this.authorities;
103 }
104
105 public Object getCredentials() {
106 return this.credentials;
107 }
108
109 public void setDetails(Object details) {
110 this.details = details;
111 }
112
113 /**
114 * Usually a {@link org.acegisecurity.ui.WebAuthenticationDetails}.
115 *
116 * @return the authentication request details, or <code>null</code>
117 */
118 public Object getDetails() {
119 return details;
120 }
121
122 public Object getPrincipal() {
123 return this.principal;
124 }
125 }