Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • Home
  • SEARCH
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 7173031
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 28, 20262026-05-28T15:44:22+00:00 2026-05-28T15:44:22+00:00

Oracle’s Http Authentication page from the Java SE 6 documentation says that if you

  • 0

Oracle’s “Http Authentication” page from the Java SE 6 documentation says that “if you are running on a Windows machine as a domain user, or, you are running on a Linux or Solaris machine that has already issued the kinit command and got the credential cache” then the instance passed to Authenticator.setDefault() “will be completely ignored”.

This matches what I observed: setting up an HTTP or HTTPS connection on a Windows system to host X always passes the credentials for host X from the ‘Windows Credentials’ of the ‘Windows Vault’, as seen in my Windows 7 ‘Credential Manager’ Control Panel page.

However, in my use case I don’t want to use any credentials which might be stored by Windows, but instead I always want to use credentials I explicitly specify in the code.

Is there a way to override the documented behavior, i.e., is there a way to ignore the credentials stored by Windows?

Update: If not, could someone point me to a place in the Java SE 6 source code where I can see that the stored Windows credentials cannot be ignored?

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-28T15:44:23+00:00Added an answer on May 28, 2026 at 3:44 pm

    I’ve looked for the same thing you are asking. So far, I haven’t found a way on the JDK to do that.

    There is a request for enhancement on Java Bug Database. Take a look at the report to find out if that gets a response from Sun (vote up the report so that hopefully that gets fixed soon).

    What I ended up doing, was override sun.net.www.protocol.http.NTLMAuthentication class. By looking at sun.net.www.protocol.http.HttpURLAuthentication, I found that the only thing you need to modify is the result of:

    NTLMAuthentication.supportsTransparentAuth()
    

    That method has a hardcoded return value, true on Windows platforms and false otherwise. This code is extracted from a JDK installed on Windows 7:

    static boolean supportsTransparentAuth()
    {
      return true;
    }
    

    What that method tells is if Windows credentials should be used by default. If set to true, your custom Authenticator code won’t be called. See this fragment of HttpURLConnection class:

    //Declared as a member variable of HttpURLConnection
    private boolean tryTransparentNTLMServer = NTLMAuthentication.supportsTransparentAuth();
    
    //Inside of getServerAuthentication method.
    PasswordAuthentication a = null;
    if (!tryTransparentNTLMServer) {
        //If set to false, this will call Authenticator.requestPasswordAuthentication().
        a = privilegedRequestPasswordAuthentication(url.getHost(), addr, port, url.getProtocol(), "", scheme, url, RequestorType.SERVER);
    }
    
    /* If we are not trying transparent authentication then 
    * we need to have a PasswordAuthentication instance. For
    * transparent authentication (Windows only) the username 
    * and password will be picked up from the current logged 
    * on users credentials.
    */
    if (tryTransparentNTLMServer || (!tryTransparentNTLMServer && a != null)) {
        //If set to true or if Authenticator did not return any credentials, use Windows credentials.
        //NTLMAuthentication constructor, if receives a == null will fetch current looged user credentials.
        ret = new NTLMAuthentication(false, url1, a);
    }
    

    To get NTLMAuthentication source code, I used this Java decompiler. Opened rt.jar located on the JDK installation folder and copied the desired class code.

    Then, I simply changed supportsTransparentAuth to return false. However, it would be highly desirable if this method checked first a system property and then return true or false based on that.

    To compile it, I just placed the java file under sun/net/www/protocol/http folder structure and run:

    javac NTLMAuthentication.java
    

    Then run my application using:

    java -Xbootclasspath:"path/to/your/sun/net/www/protocol/http/classes;normal/JDK/boot/directories"
    

    That will tell the JVM to load our implementation of NTLMAuthentication before the one in rt.jar. You have to be careful to don’t miss any default class loading paths with -Xbootclasspath, or there will be ClassNotFound errors.

    After that, everything worked just fine.

    This approach has important drawbacks that you should be aware of.

    • There are security risks. Anyone could drop a different .class file on your boot folder and steal the user credentials or other important information.
    • Code from Sun packages can change without notice and thus be incompatible with your changes.
    • If you deploy this code, you will be contravening the Sun code license. From the documentation:

    -Xbootclasspath:bootclasspath Specify a semicolon-separated list of directories, JAR archives, and ZIP archives to search for boot class
    files. These are used in place of the boot class files included in the
    Java 2 SDK. Note: Applications that use this option for the purpose of
    overriding a class in rt.jar should not be deployed as doing so would
    contravene the Java 2 Runtime Environment binary code license.

    So, this is definitely not suitable for production environments.

    Finally, this is an excellent source about boot class path option and Java class loaders: PDF

    Hope this helps.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

Oracle's documentation on atomic access (at http://docs.oracle.com/javase/tutorial/essential/concurrency/atomic.html ) says this: a volatile variable establishes
Oracle DB/Windows XP:- I am running an batch file that calls an .ctl file
oracle sql: select trunc( sysdate, 'Month') month from dual java: java.sql.Date sqlDate = resultSet.getDate(month);
running oracle enterprise linux the Oracle installer keeps telling me that my DISPLAY variable
Oracle describes the Easy Connect string as username@[//]host[:port][/service_name][:server][/instance_name] (from http://www.oracle.com/technology/products/oraclenet/files/OracleNetServices_NetEasyConnect.pdf ) However, some of
Oracle Java 7 has a list of certified platform http://www.oracle.com/technetwork/java/javase/config-417990.html#os popular server Operating systems
Oracle Forms10g provides a tool to convert the Oracle Forms modules, from the binary
ORACLE does not permit NULL values in any of the columns that comprise a
Oracle 10g has Profiles that allow various resources to be limited. Here are some
Oracle JDBC connection with Weblogic 10 datasource mapping, giving problem java.sql.SQLException: Closed Connection I

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.