All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.unboundid.scim.sdk.OAuthTokenStatus Maven / Gradle / Ivy

/*
 * Copyright 2012-2019 Ping Identity Corporation
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License (GPLv2 only)
 * or the terms of the GNU Lesser General Public License (LGPLv2.1 only)
 * as published by the Free Software Foundation.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, see .
 */

package com.unboundid.scim.sdk;

/**
 * This class defines the validation status of a OAuth 2.0 bearer token, and
 * allows a OAuthTokenHandler extension to insert an error description and
 * OAuth scope value to be returned to the client.
 */
public final class OAuthTokenStatus
{
  /**
   * Possible values for the error_code.
   */
  public static enum ErrorCode
  {
    /**
     * Indicates that the OAuth token is valid.
     */
    OK(200),

    /**
     * Indicates that the OAuth token is expired, revoked, malformed, or invalid
     * for other reasons.
     */
    INVALID_TOKEN(401),

    /**
     * Indicates that the request requires higher privileges than provided by
     * the OAuth token.
     */
    INSUFFICIENT_SCOPE(403);


    private final int code;

    /**
     * Creates an ErrorCode instance with the given HTTP status code.
     *
     * @param code The HTTP status code.
     */
    ErrorCode(final int code)
    {
      this.code = code;
    }

    /**
     * Get the HTTP status code associated with this ErrorCode.
     *
     * @return the integer HTTP status code for this ErrorCode.
     */
    public int getHttpStatusCode()
    {
      return code;
    }
  }

  private final ErrorCode code;
  private final String description;
  private final String scope;

  /**
   * Constructs an OAuthTokenStatus with the given ErrorCode.
   *
   * @param errorCode the {@link ErrorCode} to use. This must not be
   *                  {@code null}.
   */
  public OAuthTokenStatus(final ErrorCode errorCode)
  {
    this(errorCode, null, null);
  }

  /**
   * Constructs an OAuthTokenStatus with the given ErrorCode and error
   * description.
   *
   * @param errorCode the {@link ErrorCode} to use. This must not be
   *                  {@code null}.
   * @param errorDescription a human-readable description of the error. This may
   *                         be {@code null}.
   */
  public OAuthTokenStatus(final ErrorCode errorCode,
                          final String errorDescription)
  {
    this(errorCode, errorDescription, null);
  }

  /**
   * Constructs an OAuthTokenStatus with the given ErrorCode, error
   * description, and scope value.
   *
   * @param errorCode the {@link ErrorCode} to use. This must not be
   *                  {@code null}.
   * @param errorDescription a human-readable description of the error. This may
   *                         be {@code null}.
   * @param scope a space-delimited list of case-sensitive scope values
   *              indicating the required scope of the access token for
   *              accessing the requested resource. Scope values are
   *              implementation defined; there is no centralized registry for
   *              them; allowed values are defined by the authorization server.
   *              The order of scope values is not significant. This may be
   *              {@code null}.
   */
  public OAuthTokenStatus(final ErrorCode errorCode,
                          final String errorDescription,
                          final String scope)
  {
    if(errorCode == null)
    {
      throw new NullPointerException("The errorCode parameter may not be null");
    }
    this.code = errorCode;
    this.description = errorDescription;
    this.scope = scope;
  }

  /**
   * Gets the specified ErrorCode for this OAuthTokenStatus.
   *
   * @return an {@link ErrorCode} instance.
   */
  public ErrorCode getErrorCode()
  {
    return code;
  }

  /**
   * Gets the specified error description for this OAuthTokenStatus.
   *
   * @return a human-readable explanation of the error condition, or
   *         {@code null} if none was specified.
   */
  public String getErrorDescription()
  {
    return description;
  }

  /**
   * Gets the specified OAuth scope for this OAuthTokenStatus.
   *
   * @return a space-delimited list of case-sensitive scope values indicating
   *         the required scope of the access token for accessing the requested
   *         resource. Scope values are implementation defined; there is no
   *         centralized registry for them; allowed values are defined by the
   *         authorization server. The order of scope values is not significant.
   *         This may return {@code null} if no scope was specified.
   */
  public String getScope()
  {
    return scope;
  }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy