001/* 002 * (C) Copyright 2006-2011 Nuxeo SA (http://nuxeo.com/) and others. 003 * 004 * Licensed under the Apache License, Version 2.0 (the "License"); 005 * you may not use this file except in compliance with the License. 006 * You may obtain a copy of the License at 007 * 008 * http://www.apache.org/licenses/LICENSE-2.0 009 * 010 * Unless required by applicable law or agreed to in writing, software 011 * distributed under the License is distributed on an "AS IS" BASIS, 012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 013 * See the License for the specific language governing permissions and 014 * limitations under the License. 015 * 016 * Contributors: 017 * Nuxeo - initial API and implementation 018 * 019 * $Id$ 020 */ 021 022package org.nuxeo.runtime.api.login; 023 024import java.security.Principal; 025 026import javax.security.auth.callback.CallbackHandler; 027import javax.security.auth.login.LoginContext; 028import javax.security.auth.login.LoginException; 029 030/** 031 * @author <a href="mailto:[email protected]">Bogdan Stefanescu</a> 032 */ 033public interface LoginService { 034 035 /** 036 * System login, using a private principal that has all privileges. This principal is not stored in any database and 037 * cannot be accessed by user. 038 * <p> 039 * The method requires the caller to have the {@link SystemLoginPermission} permission. 040 * 041 * @return the login context 042 */ 043 LoginContext login() throws LoginException; 044 045 /** 046 * System login, using a private principal that has all privileges. This principal is not stored in any database and 047 * cannot be accessed by user. 048 * <p> 049 * The method requires the caller to have the {@link SystemLoginPermission} permission. 050 * 051 * @param username the username that originated the system login 052 * @return the login context 053 */ 054 LoginContext loginAs(String username) throws LoginException; 055 056 /** 057 * Client login using the given username and password. 058 */ 059 LoginContext login(String username, Object credentials) throws LoginException; 060 061 /** 062 * Client login using a custom callback handler to retrieve login info. 063 * 064 * @param cbHandler the callback handler to use to retrieve the login info 065 * @return the login context 066 */ 067 LoginContext login(CallbackHandler cbHandler) throws LoginException; 068 069 SecurityDomain getSecurityDomain(String name); 070 071 void addSecurityDomain(SecurityDomain domain); 072 073 boolean isSystemId(Principal principal); 074 075 void removeSecurityDomain(String name); 076 077 SecurityDomain[] getSecurityDomains(); 078 079 void removeSecurityDomains(); 080 081}