1adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project/* 2adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Licensed to the Apache Software Foundation (ASF) under one or more 3adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * contributor license agreements. See the NOTICE file distributed with 4adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * this work for additional information regarding copyright ownership. 5adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * The ASF licenses this file to You under the Apache License, Version 2.0 6adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * (the "License"); you may not use this file except in compliance with 7adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the License. You may obtain a copy of the License at 8adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * 9adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 10adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * 11adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Unless required by applicable law or agreed to in writing, software 12adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 13adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * See the License for the specific language governing permissions and 15adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * limitations under the License. 16adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 17adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 18adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpackage java.net; 19adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 20adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project/** 21adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * An implementation of this class is able to obtain authentication information 22adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * for a connection in several ways. For this purpose it has to set the default 23adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * authenticator which extends {@code Authenticator} by {@code 24adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * setDefault(Authenticator a)}. Then it should override {@code 25adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * getPasswordAuthentication()} which dictates how the authentication info is 26adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * obtained. Usually, it prompts the user for the required input. 27f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 28adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @see #setDefault 29adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @see #getPasswordAuthentication 30adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 31adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpublic abstract class Authenticator { 32adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 33adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // the default authenticator that needs to be set 34adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private static Authenticator thisAuthenticator; 35adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 36adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private String host; 37adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private InetAddress addr; 38adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private int port; 39adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private String protocol; 40adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private String prompt; 41adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private String scheme; 42adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private URL url; 43adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private RequestorType rt; 44adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 45adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 46adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Returns the collected username and password for authorization. The 47adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * subclass has to override this method to return a value different to the 48adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * default which is {@code null}. 49adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * <p> 50adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Returns {@code null} by default. 51f5597e626ecf7949d249dea08c1a2964d890ec11Jesse Wilson * 52adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return collected password authentication data. 53adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 54adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project protected PasswordAuthentication getPasswordAuthentication() { 55adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return null; 56adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 57adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 58adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 59adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Returns the port of the connection that requests authorization. 60f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 61adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return port of the connection. 62adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 63adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project protected final int getRequestingPort() { 64adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return this.port; 65adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 66adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 67adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 68adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Returns the address of the connection that requests authorization or 69adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * {@code null} if unknown. 70f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 71adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return address of the connection. 72adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 73adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project protected final InetAddress getRequestingSite() { 74adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return this.addr; 75adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 76adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 77adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 78adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Returns the realm (prompt string) of the connection that requests 79adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * authorization. 80f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 81adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return prompt string of the connection. 82adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 83adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project protected final String getRequestingPrompt() { 84adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return this.prompt; 85adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 86adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 87adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 88adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Returns the protocol of the connection that requests authorization. 89f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 90adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return protocol of the connection. 91adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 92adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project protected final String getRequestingProtocol() { 93adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return this.protocol; 94adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 95adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 96adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 97adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Returns the scheme of the connection that requests authorization, for 98adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * example HTTP Basic Authentication. 99f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 100adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return scheme of the connection. 101adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 102adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project protected final String getRequestingScheme() { 103adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return this.scheme; 104adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 105adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 106adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 10787548e8585334658c3ee89050ec917a10ca35e5aElliott Hughes * Invokes the methods of the registered 108adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * authenticator to get the authentication info. 109f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 110adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return password authentication info or {@code null} if no authenticator 111adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * exists. 112adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param rAddr 113adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * address of the connection that requests authentication. 114adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param rPort 115adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * port of the connection that requests authentication. 116adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param rProtocol 117adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * protocol of the connection that requests authentication. 118adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param rPrompt 119adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * realm of the connection that requests authentication. 120adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param rScheme 121adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * scheme of the connection that requests authentication. 122adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 123adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public static synchronized PasswordAuthentication requestPasswordAuthentication( 124adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project InetAddress rAddr, int rPort, String rProtocol, String rPrompt, 125adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String rScheme) { 126adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (thisAuthenticator == null) { 127adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return null; 128adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 129adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // set the requester info so it knows what it is requesting 130adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // authentication for 131adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project thisAuthenticator.addr = rAddr; 132adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project thisAuthenticator.port = rPort; 133adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project thisAuthenticator.protocol = rProtocol; 134adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project thisAuthenticator.prompt = rPrompt; 135adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project thisAuthenticator.scheme = rScheme; 136adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project thisAuthenticator.rt = RequestorType.SERVER; 137adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 138adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // returns the authentication info obtained by the registered 139adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Authenticator 140adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return thisAuthenticator.getPasswordAuthentication(); 141adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 142adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 143adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 144adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Sets {@code a} as the default authenticator. It will be called whenever 14587548e8585334658c3ee89050ec917a10ca35e5aElliott Hughes * the realm that the URL is pointing to requires authorization. 146f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 147adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param a 148adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * authenticator which has to be set as default. 149adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 150adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public static void setDefault(Authenticator a) { 151adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project thisAuthenticator = a; 152adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 153adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 154adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 15587548e8585334658c3ee89050ec917a10ca35e5aElliott Hughes * Invokes the methods of the registered 156adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * authenticator to get the authentication info. 157f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 158adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return password authentication info or {@code null} if no authenticator 159adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * exists. 160adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param rHost 161adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * host name of the connection that requests authentication. 162adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param rAddr 163adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * address of the connection that requests authentication. 164adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param rPort 165adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * port of the connection that requests authentication. 166adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param rProtocol 167adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * protocol of the connection that requests authentication. 168adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param rPrompt 169adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * realm of the connection that requests authentication. 170adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param rScheme 171adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * scheme of the connection that requests authentication. 172adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 173adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public static synchronized PasswordAuthentication requestPasswordAuthentication( 174adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String rHost, InetAddress rAddr, int rPort, String rProtocol, 175adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String rPrompt, String rScheme) { 176adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (thisAuthenticator == null) { 177adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return null; 178adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 179adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // set the requester info so it knows what it is requesting 180adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // authentication for 181adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project thisAuthenticator.host = rHost; 182adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project thisAuthenticator.addr = rAddr; 183adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project thisAuthenticator.port = rPort; 184adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project thisAuthenticator.protocol = rProtocol; 185adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project thisAuthenticator.prompt = rPrompt; 186adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project thisAuthenticator.scheme = rScheme; 187adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project thisAuthenticator.rt = RequestorType.SERVER; 188adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 189adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // returns the authentication info obtained by the registered 190adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Authenticator 191adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return thisAuthenticator.getPasswordAuthentication(); 192adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 193adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 194adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 195adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Returns the host name of the connection that requests authentication or 196adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * {@code null} if unknown. 197f5597e626ecf7949d249dea08c1a2964d890ec11Jesse Wilson * 198adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return name of the requesting host or {@code null}. 199adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 200adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project protected final String getRequestingHost() { 201adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return host; 202adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 203adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 204adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 20587548e8585334658c3ee89050ec917a10ca35e5aElliott Hughes * Invokes the methods of the registered 206adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * authenticator to get the authentication info. 207f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 208adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return password authentication info or {@code null} if no authenticator 209adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * exists. 210adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param rHost 211adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * host name of the connection that requests authentication. 212adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param rAddr 213adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * address of the connection that requests authentication. 214adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param rPort 215adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * port of the connection that requests authentication. 216adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param rProtocol 217adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * protocol of the connection that requests authentication. 218adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param rPrompt 219adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * realm of the connection that requests authentication. 220adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param rScheme 221adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * scheme of the connection that requests authentication. 222adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param rURL 223adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * url of the connection that requests authentication. 224adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param reqType 225adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * requestor type of the connection that requests authentication. 226adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 227adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public static PasswordAuthentication requestPasswordAuthentication( 228adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String rHost, InetAddress rAddr, int rPort, String rProtocol, 229adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String rPrompt, String rScheme, URL rURL, 230adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Authenticator.RequestorType reqType) { 231b46dab348e2007bc08abaf7ecae34d89a2474e50Elliott Hughes if (thisAuthenticator == null) { 232adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return null; 233adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 234adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // sets the requester info so it knows what it is requesting 235adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // authentication for 236adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project thisAuthenticator.host = rHost; 237adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project thisAuthenticator.addr = rAddr; 238adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project thisAuthenticator.port = rPort; 239adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project thisAuthenticator.protocol = rProtocol; 240adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project thisAuthenticator.prompt = rPrompt; 241adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project thisAuthenticator.scheme = rScheme; 242adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project thisAuthenticator.url = rURL; 243adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project thisAuthenticator.rt = reqType; 244adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 245adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // returns the authentication info obtained by the registered 246adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Authenticator 247adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return thisAuthenticator.getPasswordAuthentication(); 248adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 249adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 250adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 251adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 252adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Returns the URL of the authentication request. 253f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 254adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return authentication request url. 255adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 256adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project protected URL getRequestingURL() { 257adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return url; 258adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 259adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 260adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 261adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Returns the type of this request, it can be {@code PROXY} or {@code SERVER}. 262f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 263adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return RequestorType of the authentication request. 264adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 265adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project protected Authenticator.RequestorType getRequestorType() { 266adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return rt; 267adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 268adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 269adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 270adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Enumeration class for the origin of the authentication request. 271adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 272adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public enum RequestorType { 273adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 274adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 275adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Type of proxy server 276adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 277adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project PROXY, 278adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 279adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 280adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Type of origin server 281adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 282adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project SERVER 283adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 284adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project} 285