/** * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.zookeeper.server.auth; import org.apache.zookeeper.KeeperException; import org.apache.zookeeper.server.ServerCnxn; /** * This interface is implemented by authentication providers to add new kinds of * authentication schemes to ZooKeeper. */ public interface AuthenticationProvider { /** * The String used to represent this provider. This will correspond to the * scheme field of an Id. * * @return the scheme of this provider. */ String getScheme(); /** * This method is called when a client passes authentication data for this * scheme. The authData is directly from the authentication packet. The * implementor may attach new ids to the authInfo field of cnxn or may use * cnxn to send packets back to the client. * * @param cnxn * the cnxn that received the authentication information. * @param authData * the authentication data received. * @return TODO */ KeeperException.Code handleAuthentication(ServerCnxn cnxn, byte authData[]); /** * This method is called to see if the given id matches the given id * expression in the ACL. This allows schemes to use application specific * wild cards. * * @param id * the id to check. * @param aclExpr * the expression to match ids against. * @return true if the id can be matched by the expression. */ boolean matches(String id, String aclExpr); /** * This method is used to check if the authentication done by this provider * should be used to identify the creator of a node. Some ids such as hosts * and ip addresses are rather transient and in general don't really * identify a client even though sometimes they do. * * @return true if this provider identifies creators. */ boolean isAuthenticated(); /** * Validates the syntax of an id. * * @param id * the id to validate. * @return true if id is well formed. */ boolean isValid(String id); }