001 /*
002 * Licensed to the Apache Software Foundation (ASF) under one
003 * or more contributor license agreements. See the NOTICE file
004 * distributed with this work for additional information
005 * regarding copyright ownership. The ASF licenses this file
006 * to you under the Apache License, Version 2.0 (the
007 * "License"); you may not use this file except in compliance
008 * with the License. You may obtain a copy of the License at
009 *
010 * http://www.apache.org/licenses/LICENSE-2.0
011 *
012 * Unless required by applicable law or agreed to in writing,
013 * software distributed under the License is distributed on an
014 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
015 * KIND, either express or implied. See the License for the
016 * specific language governing permissions and limitations
017 * under the License.
018 */
019 package org.apache.shiro.authc.credential;
020
021 import org.apache.shiro.authc.AuthenticationInfo;
022 import org.apache.shiro.authc.AuthenticationToken;
023
024
025 /**
026 * Interface implemented by classes that can determine if an AuthenticationToken's provided
027 * credentials matches a corresponding account's credentials stored in the system.
028 *
029 * <p>Simple direct comparisons are handled well by the
030 * {@link SimpleCredentialsMatcher SimpleCredentialsMatcher}. If you
031 * hash user's credentials before storing them in a realm (a common practice), look at the
032 * {@link HashedCredentialsMatcher HashedCredentialsMatcher} implementations,
033 * as they support this scenario.
034 *
035 * @author Jeremy Haile
036 * @author Les Hazlewood
037 * @see SimpleCredentialsMatcher
038 * @see AllowAllCredentialsMatcher
039 * @see Md5CredentialsMatcher
040 * @see Sha1CredentialsMatcher
041 * @since 0.1
042 */
043 public interface CredentialsMatcher {
044
045 /**
046 * Returns <tt>true</tt> if the provided token credentials match the stored account credentials,
047 * <tt>false</tt> otherwise.
048 *
049 * @param token the <tt>AuthenticationToken</tt> submitted during the authentication attempt
050 * @param info the <tt>AuthenticationInfo</tt> stored in the system.
051 * @return <tt>true</tt> if the provided token credentials match the stored account credentials,
052 * <tt>false</tt> otherwise.
053 */
054 boolean doCredentialsMatch(AuthenticationToken token, AuthenticationInfo info);
055
056 }