blob: 007257cdcc4e773ce5fdad107ad2ffce5672ef9c [file] [log] [blame]
/*-
* Copyright (C) 2002, 2018, Oracle and/or its affiliates. All rights reserved.
*
* This file was distributed by Oracle as part of a version of Oracle Berkeley
* DB Java Edition made available at:
*
* http://www.oracle.com/technetwork/database/database-technologies/berkeleydb/downloads/index.html
*
* Please see the LICENSE file included in the top-level directory of the
* appropriate version of Oracle Berkeley DB Java Edition for a copy of the
* license and additional information.
*/
package com.sleepycat.je.rep.subscription;
/**
* Object represents an interface to authenticate stream consumer and check its
* access privilege.
*/
public interface StreamAuthenticator {
/**
* Server wait time in ms before drop connection if authentication fails
*/
long SECURITY_FAILURE_WAIT_TIME_MS = 5000;
/**
* Specifies the login token.
*
* @param token login token in bytes
*/
void setToken(byte[] token);
/**
* Specifies the table Ids. The table Ids are passed from stream consumer
* as string form. Each of the table id strings uniquely identifies a
* subscribed table.
*
* @param tableIds set of subscribed table id strings
*/
void setTableIds(String[] tableIds);
/**
* Returns whether the current token is valid.
*
* @return true if currently stored token is valid, false otherwise.
*/
boolean authenticate();
/**
* Returns whether the current token is valid and grants access to the
* current table Ids.
*
* @return true if owner of current token is valid and has enough
* privileges to stream updates from subscribed tables, false otherwise.
*/
boolean checkAccess();
/**
* Gets the time stamp of last check. Implementation of this interface
* shall remember the time stamp of each check, regardless of the check
* result. It shall return 0 if no previous check has been performed. The
* caller can determine if a security check has been performed in the
* last certain milliseconds by subtracting this value from the current
* time.
*
* @return the time stamp of last check in milliseconds, 0 if no previous
* check has been performed.
*/
long getLastCheckTimeMs();
}