103928aee4356845252ac6b662d5c72c29903813eJake Slack//
203928aee4356845252ac6b662d5c72c29903813eJake Slack//  ========================================================================
303928aee4356845252ac6b662d5c72c29903813eJake Slack//  Copyright (c) 1995-2014 Mort Bay Consulting Pty. Ltd.
403928aee4356845252ac6b662d5c72c29903813eJake Slack//  ------------------------------------------------------------------------
503928aee4356845252ac6b662d5c72c29903813eJake Slack//  All rights reserved. This program and the accompanying materials
603928aee4356845252ac6b662d5c72c29903813eJake Slack//  are made available under the terms of the Eclipse Public License v1.0
703928aee4356845252ac6b662d5c72c29903813eJake Slack//  and Apache License v2.0 which accompanies this distribution.
803928aee4356845252ac6b662d5c72c29903813eJake Slack//
903928aee4356845252ac6b662d5c72c29903813eJake Slack//      The Eclipse Public License is available at
1003928aee4356845252ac6b662d5c72c29903813eJake Slack//      http://www.eclipse.org/legal/epl-v10.html
1103928aee4356845252ac6b662d5c72c29903813eJake Slack//
1203928aee4356845252ac6b662d5c72c29903813eJake Slack//      The Apache License v2.0 is available at
1303928aee4356845252ac6b662d5c72c29903813eJake Slack//      http://www.opensource.org/licenses/apache2.0.php
1403928aee4356845252ac6b662d5c72c29903813eJake Slack//
1503928aee4356845252ac6b662d5c72c29903813eJake Slack//  You may elect to redistribute this code under either of these licenses.
1603928aee4356845252ac6b662d5c72c29903813eJake Slack//  ========================================================================
1703928aee4356845252ac6b662d5c72c29903813eJake Slack//
1803928aee4356845252ac6b662d5c72c29903813eJake Slack
1903928aee4356845252ac6b662d5c72c29903813eJake Slackpackage org.eclipse.jetty.security;
2003928aee4356845252ac6b662d5c72c29903813eJake Slack
2103928aee4356845252ac6b662d5c72c29903813eJake Slackimport org.eclipse.jetty.server.UserIdentity;
2203928aee4356845252ac6b662d5c72c29903813eJake Slack
2303928aee4356845252ac6b662d5c72c29903813eJake Slack
2403928aee4356845252ac6b662d5c72c29903813eJake Slack/* ------------------------------------------------------------ */
2503928aee4356845252ac6b662d5c72c29903813eJake Slack/**
2603928aee4356845252ac6b662d5c72c29903813eJake Slack * Login Service Interface.
2703928aee4356845252ac6b662d5c72c29903813eJake Slack * <p>
2803928aee4356845252ac6b662d5c72c29903813eJake Slack * The Login service provides an abstract mechanism for an {@link Authenticator}
2903928aee4356845252ac6b662d5c72c29903813eJake Slack * to check credentials and to create a {@link UserIdentity} using the
3003928aee4356845252ac6b662d5c72c29903813eJake Slack * set {@link IdentityService}.
3103928aee4356845252ac6b662d5c72c29903813eJake Slack */
3203928aee4356845252ac6b662d5c72c29903813eJake Slackpublic interface LoginService
3303928aee4356845252ac6b662d5c72c29903813eJake Slack{
3403928aee4356845252ac6b662d5c72c29903813eJake Slack
3503928aee4356845252ac6b662d5c72c29903813eJake Slack    /* ------------------------------------------------------------ */
3603928aee4356845252ac6b662d5c72c29903813eJake Slack    /**
3703928aee4356845252ac6b662d5c72c29903813eJake Slack     * @return Get the name of the login service (aka Realm name)
3803928aee4356845252ac6b662d5c72c29903813eJake Slack     */
3903928aee4356845252ac6b662d5c72c29903813eJake Slack    String getName();
4003928aee4356845252ac6b662d5c72c29903813eJake Slack
4103928aee4356845252ac6b662d5c72c29903813eJake Slack    /* ------------------------------------------------------------ */
4203928aee4356845252ac6b662d5c72c29903813eJake Slack    /** Login a user.
4303928aee4356845252ac6b662d5c72c29903813eJake Slack     * @param username The user name
4403928aee4356845252ac6b662d5c72c29903813eJake Slack     * @param credentials The users credentials
4503928aee4356845252ac6b662d5c72c29903813eJake Slack     * @return A UserIdentity if the credentials matched, otherwise null
4603928aee4356845252ac6b662d5c72c29903813eJake Slack     */
4703928aee4356845252ac6b662d5c72c29903813eJake Slack    UserIdentity login(String username,Object credentials);
4803928aee4356845252ac6b662d5c72c29903813eJake Slack
4903928aee4356845252ac6b662d5c72c29903813eJake Slack    /* ------------------------------------------------------------ */
5003928aee4356845252ac6b662d5c72c29903813eJake Slack    /** Validate a user identity.
5103928aee4356845252ac6b662d5c72c29903813eJake Slack     * Validate that a UserIdentity previously created by a call
5203928aee4356845252ac6b662d5c72c29903813eJake Slack     * to {@link #login(String, Object)} is still valid.
5303928aee4356845252ac6b662d5c72c29903813eJake Slack     * @param user The user to validate
5403928aee4356845252ac6b662d5c72c29903813eJake Slack     * @return true if authentication has not been revoked for the user.
5503928aee4356845252ac6b662d5c72c29903813eJake Slack     */
5603928aee4356845252ac6b662d5c72c29903813eJake Slack    boolean validate(UserIdentity user);
5703928aee4356845252ac6b662d5c72c29903813eJake Slack
5803928aee4356845252ac6b662d5c72c29903813eJake Slack    /* ------------------------------------------------------------ */
5903928aee4356845252ac6b662d5c72c29903813eJake Slack    /** Get the IdentityService associated with this Login Service.
6003928aee4356845252ac6b662d5c72c29903813eJake Slack     * @return the IdentityService associated with this Login Service.
6103928aee4356845252ac6b662d5c72c29903813eJake Slack     */
6203928aee4356845252ac6b662d5c72c29903813eJake Slack    IdentityService getIdentityService();
6303928aee4356845252ac6b662d5c72c29903813eJake Slack
6403928aee4356845252ac6b662d5c72c29903813eJake Slack    /* ------------------------------------------------------------ */
6503928aee4356845252ac6b662d5c72c29903813eJake Slack    /** Set the IdentityService associated with this Login Service.
6603928aee4356845252ac6b662d5c72c29903813eJake Slack     * @param service the IdentityService associated with this Login Service.
6703928aee4356845252ac6b662d5c72c29903813eJake Slack     */
6803928aee4356845252ac6b662d5c72c29903813eJake Slack    void setIdentityService(IdentityService service);
6903928aee4356845252ac6b662d5c72c29903813eJake Slack
7003928aee4356845252ac6b662d5c72c29903813eJake Slack    void logout(UserIdentity user);
7103928aee4356845252ac6b662d5c72c29903813eJake Slack
7203928aee4356845252ac6b662d5c72c29903813eJake Slack}
73