001/*
002 * CDDL HEADER START
003 *
004 * The contents of this file are subject to the terms of the
005 * Common Development and Distribution License, Version 1.0 only
006 * (the "License").  You may not use this file except in compliance
007 * with the License.
008 *
009 * You can obtain a copy of the license at
010 * docs/licenses/cddl.txt
011 * or http://www.opensource.org/licenses/cddl1.php.
012 * See the License for the specific language governing permissions
013 * and limitations under the License.
014 *
015 * When distributing Covered Code, include this CDDL HEADER in each
016 * file and include the License file at
017 * docs/licenses/cddl.txt.  If applicable,
018 * add the following below this CDDL HEADER, with the fields enclosed
019 * by brackets "[]" replaced with your own identifying information:
020 *      Portions Copyright [yyyy] [name of copyright owner]
021 *
022 * CDDL HEADER END
023 *
024 *
025 *      Copyright 2011-2016 UnboundID Corp.
026 */
027
028package com.unboundid.directory.sdk.http.types;
029
030import java.io.Serializable;
031import java.util.Collection;
032
033/**
034 * Represents a HTTP authentication result.
035 */
036public class AuthenticationResult implements Serializable
037{
038  private static final long serialVersionUID = 8564121520143995963L;
039  private final Object principal;
040  private final Collection<String> authorities;
041
042  // The time that the user authenticated with the server, in milliseconds
043  // since midnight January 1, 1970 GMT
044  private final long authTime;
045
046  /**
047   * Construct a new Authentication Result with the provided information.
048   *
049   * @param principal The object representing the authenticated principal.
050   * @param authorities The authorities that the principal has been granted.
051   * @param authTime The time at which the resource owner was authenticated with
052   *                 the Identity Broker, in milliseconds since 1/1/70 12:00 AM.
053   */
054  public AuthenticationResult(final Object principal,
055                              final Collection<String> authorities,
056                              final long authTime)
057  {
058    this.principal = principal;
059    this.authorities = authorities;
060    this.authTime = authTime;
061  }
062
063  /**
064   * The identity of the authenticated principal.
065   *
066   * @return the authenticated <code>Principal</code>.
067   */
068  public Object getPrincipal()
069  {
070    return principal;
071  }
072
073  /**
074   * The authorities that the principal has been granted.
075   *
076   * @return the authorities granted to the principal, Never null.
077   */
078  public Collection<String> getAuthorities()
079  {
080    return authorities;
081  }
082
083  /**
084   * Retrieves the time that the user authenticated with the server.
085   *
086   * @return Authentication time in milliseconds since midnight 1/1/1970 GMT.
087   */
088  public long getAuthTime() {
089    return authTime;
090  }
091}