?
Solved

java.net.Authenticator and setDault()

Posted on 2003-11-24
17
Medium Priority
?
871 Views
Last Modified: 2012-05-04
How can the authenticator initially set using setDefault() be 'undone' or 'reset'. In my code I'd like to reset the authenticator to use a new set of credentials each time it's called but it keeps using the credentials that were used to create the initial authenticator. Any help out there?
0
Comment
Question by:craigdawson
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 9
  • 6
  • 2
17 Comments
 
LVL 86

Expert Comment

by:CEHJ
ID: 9812982
How are you trying to reset it? - please post code
0
 

Author Comment

by:craigdawson
ID: 9813077
I am not trying because I don't know how to do it :-)  The basic code is below.

// Install Authenticator
Authenticator.setDefault (new MyAuthenticator (userId, password));
...

class MyAuthenticator extends Authenticator {
         private String username = "";
          private String password = "";
   
          public MyAuthenticator(){}
   
          public MyAuthenticator(String username, String password){
                this.username = username;
                this.password = password;
          }
   
          protected PasswordAuthentication getPasswordAuthentication() {
                  return new PasswordAuthentication (this.username, this.password.toCharArray());
          }

}
0
 
LVL 86

Expert Comment

by:CEHJ
ID: 9813100
You can use the same authenticator:

String password = null;
String username = null;
String hostname = getRequestingHost();
if (hostname.equals("somehost.somewhere.com")) {
  username = "uname1";
  password = "password1");
}
else if(.....
0
Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
LVL 86

Expert Comment

by:CEHJ
ID: 9813146
To have a looser coupling between your code and the credentials, you could keep them in a Map keyed on hostname and use Properties to load username/passwords (which you could encrypt if necessary)

0
 

Author Comment

by:craigdawson
ID: 9813150
Not sure that helps me. I want to hit the same url with different credentials each time.
0
 
LVL 86

Expert Comment

by:CEHJ
ID: 9813187
Then just rotate credentials each time the callback function is called:

numberOfCalls++;      
switch(numberOfCalls) {
      case 1:
            username = "y";
            password = "x";
            break;
      case 2:
            username = "p";
            password = "q";
            break;
}            
            
0
 

Author Comment

by:craigdawson
ID: 9813247
Not just different credentials. User-supplied credentials. I can't hard code them.
0
 
LVL 86

Expert Comment

by:CEHJ
ID: 9813287
Then what's wrong with

username = getUsernameFromUser();      
password = getPasswordFromUser();

?
0
 

Author Comment

by:craigdawson
ID: 9813354
I have Java web app. The login page accepts credentials. Once the user has entered id and pw, the code must invoke an ASP page with thise same credentials, stream in some content, and continue with the java/jsp processing. It's the call to the ASP I'm trying to use the Authenticator for. I can't ask for the credentials again.

Thanks for all your input to this point.
0
 
LVL 86

Expert Comment

by:CEHJ
ID: 9813388
>>It's the call to the ASP I'm trying to use the Authenticator for

I still don't see what the problem is. What about

String username = (String)request().getSession().getAttribute("username");
String password = (String)request().getSession().getAttribute("password");

(these details having previously been put in the session)

?
0
 

Author Comment

by:craigdawson
ID: 9813842
Maybe I'm just dense but ...

The request object isn't available in getPasswordAuthentication(). If I add it to the constructor and store it, I get an exception: java.lang.IllegalStateException: Context has not been prepared for next connection.
0
 
LVL 86

Expert Comment

by:CEHJ
ID: 9813877
You could pass the session as an argument to an Authenticator constructor
0
 
LVL 92

Expert Comment

by:objects
ID: 9814864
> You could pass the session as an argument to an Authenticator constructor

Don't think you can do that.
0
 
LVL 92

Expert Comment

by:objects
ID: 9814877
Is there a point in your code where you know the cr4edentials have changed and what they are? If so you could change the authenticator at that point.
0
 
LVL 86

Accepted Solution

by:
CEHJ earned 1000 total points
ID: 9817377
>>Don't think you can do that.

What makes you think that? Give it a try craigdawson...
0
 

Author Comment

by:craigdawson
ID: 9817575
Using session worked. Full marks for persistence to CEHJ! Thanks.
0
 
LVL 86

Expert Comment

by:CEHJ
ID: 9817666
:-)
0

Featured Post

Enroll in August's Course of the Month

August's CompTIA IT Fundamentals course includes 19 hours of basic computer principle modules and prepares you for the certification exam. It's free for Premium Members, Team Accounts, and Qualified Experts!

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Java contains several comparison operators (e.g., <, <=, >, >=, ==, !=) that allow you to compare primitive values. However, these operators cannot be used to compare the contents of objects. Interface Comparable is used to allow objects of a cl…
Java functions are among the best things for programmers to work with as Java sites can be very easy to read and prepare. Java especially simplifies many processes in the coding industry as it helps integrate many forms of technology and different d…
Viewers learn about the scanner class in this video and are introduced to receiving user input for their programs. Additionally, objects, conditional statements, and loops are used to help reinforce the concepts. Introduce Scanner class: Importing…
This tutorial covers a step-by-step guide to install VisualVM launcher in eclipse.
Suggested Courses
Course of the Month8 days, 16 hours left to enroll

764 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question