blob: 741ce0e517c1eaa2316c0575d94d29b99cc33c03 [file] [log] [blame]
/*
* Copyright (c) 2013 Eike Stepper (Loehne, Germany) and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Christian W. Damus (CEA LIST) - initial API and implementation
* Christian W. Damus (CEA LIST) - bug 418454
*/
package org.eclipse.net4j.util.security;
/**
* Extension interface for authenticators that can update user credentials in addition to authenticating them.
*
* @since 3.4
* @author Christian W. Damus (CEA LIST)
*/
public interface IAuthenticator2 extends IAuthenticator
{
/**
* Updates the password <em>stored</em> for the user identified by {@code userID}. The {@code oldPassword} is authenticated
* {@linkplain IAuthenticator#authenticate(String, char[]) as per usual} and is replaced by the {@code newPassword} only
* (and atomically) on success.
*
* @param userID the ID of the user whose password is to be updated
* @param oldPassword the user's current password attempt to verify against the <em>stored</em> password
* @param newPassword the new password to replace the {@code oldPassword}
*
* @throws SecurityException on any failure to authenticate the {@code oldPassword} or validate and/or set the {@code newPassword}
*/
public void updatePassword(String userID, char[] oldPassword, char[] newPassword);
/**
* Performs an administrative resets of the password <em>stored</em> for the user identified by {@code userID}.
* The {@code adminID} and {@code adminPassword} must {@linkplain IAuthenticator#authenticate(String, char[]) authenticate}
* to permit the {@code userID}'s password to be set to the {@code newPassword}.
*
* @param adminID the ID of the administrator requesting the reset
* @param adminPassword the administrator's password
* @param userID the ID of the user whose password is to be reset
* @param newPassword the new password to replace the user's old password
*
* @throws SecurityException on any failure to authenticate the {@code oldPassword} or validate and/or set the {@code newPassword}
*/
public void resetPassword(String adminID, char[] adminPassword, String userID, char[] newPassword);
/**
* Queries whether a given user has administrative privileges.
*
* @param userID an user ID, which may or may not exist
*
* @return whether the userID exists and has administrative privileges
*/
public boolean isAdministrator(String userID);
}