001package org.apache.archiva.redback.authentication;
002
003/*
004 * Licensed to the Apache Software Foundation (ASF) under one
005 * or more contributor license agreements.  See the NOTICE file
006 * distributed with this work for additional information
007 * regarding copyright ownership.  The ASF licenses this file
008 * to you under the Apache License, Version 2.0 (the
009 * "License"); you may not use this file except in compliance
010 * with the License.  You may obtain a copy of the License at
011 *
012 * http://www.apache.org/licenses/LICENSE-2.0
013 * Unless required by applicable law or agreed to in writing,
014 * software distributed under the License is distributed on an
015 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
016 * KIND, either express or implied.  See the License for the
017 * specific language governing permissions and limitations
018 * under the License.
019 */
020
021/**
022 * This interface represents a token including its metadata.
023 *
024 * @author Martin Stockhammer <martin_s@apache.org>
025 */
026public interface Token
027{
028
029    /**
030     * The token id, if it exists, otherwise a empty string.
031     * @return
032     */
033    String getId();
034
035    /**
036     * Returns the token type (access or refresh token)
037     * @return the token type
038     */
039    TokenType getType();
040
041    /**
042     * The string representation of the token data. It depends on the token algorithm,
043     * what kind of string conversion is used (e.g. Base64)
044     * @return the token string
045     */
046    String getData();
047
048    /**
049     * The token as byte array
050     * @return
051     */
052    byte[] getBytes();
053
054    /**
055     * The token meta data, like expiration time.
056     * @return the metadata
057     */
058    TokenData getMetadata();
059}