Authentication not triggered on nightlies Seamonkey only

VERIFIED FIXED

Status

SeaMonkey
Passwords & Permissions
P2
normal
VERIFIED FIXED
2 years ago
2 years ago

People

(Reporter: dominique fillon, Assigned: frg)

Tracking

SeaMonkey 2.48 Branch
x86_64
Windows 10

SeaMonkey Tracking Flags

(seamonkey2.44 unaffected, seamonkey2.45 unaffected, seamonkey2.46 unaffected, seamonkey2.47 unaffected, seamonkey2.48 fixed)

Details

Attachments

(1 attachment, 2 obsolete attachments)

(Reporter)

Description

2 years ago
User Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:51.0) Gecko/20100101 Firefox/51.0 SeaMonkey/2.48a1
Build ID: 20160830010222

Steps to reproduce:

Since Seamonkey nightly 20160905 and possibly 20160904) I cannot authenticate on my corporate pages such as SharePoint.


Actual results:

Loading a normally authenticated URL results in an error : 401 Not Authorized


Expected results:

Prompt for authentication
(Reporter)

Comment 1

2 years ago
Checking with Firefox nightly 20160905, the authentication on the same web sites works. 
I am not sure if it related to NTLM.
Priority: -- → P2

Comment 2

2 years ago
@reporter:
Please submit a new bug report with step by step instruction what allows to reproduce the problem reliably due to <https://developer.mozilla.org/en-US/docs/Mozilla/QA/Bug_writing_guidelines>.
Flags: needinfo?(dominique)
(Reporter)

Comment 3

2 years ago
bissecting further, Seamonkey:
20160830 works fine
20160902 does not work

I'll try to find public web pages that works the same as my corporate Active Directory /LDAP authentication in order to provide a repeatable STR.

What is failing is the authentication where I provide my DOMAIN\username and password. No prompt is presented and only the message 401 : unauthorized appear.
(Reporter)

Comment 4

2 years ago
Here are the console errors logged when trying to access these pages:

Timestamp: 9/5/2016 3:36:43 PM
Error: TypeError: checkValue is undefined
Source File: resource://gre/components/nsPrompter.js
Line: 741

Timestamp: 9/5/2016 3:36:43 PM
Error: uncaught exception: 2147500033

Timestamp: 9/5/2016 3:36:43 PM
Error: nsPrompter: Delegation to password manager failed: [Exception... "[JavaScript Error: "win.gBrowser.getBrowserForContentWindow is not a function" {file: "resource://gre/components/nsLoginManagerPrompter.js" line: 1348}]'[JavaScript Error: "win.gBrowser.getBrowserForContentWindow is not a function" {file: "resource://gre/components/nsLoginManagerPrompter.js" line: 1348}]' when calling method: [nsIPromptFactory::getPrompt]"  nsresult: "0x80570021 (NS_ERROR_XPC_JAVASCRIPT_ERROR_WITH_DETAILS)"  location: "JS frame :: resource://gre/components/nsPrompter.js :: Prompter.prototype.getPrompt :: line 42"  data: yes]
Source File: resource://gre/components/nsPrompter.js
Line: 44

Timestamp: 9/5/2016 3:36:43 PM
Error: TypeError: win.gBrowser.getBrowserForContentWindow is not a function
Source File: resource://gre/components/nsLoginManagerPrompter.js
Line: 1348
(Reporter)

Comment 5

2 years ago
Same problem in safe mode (all add-ons disabled).

Comment 6

2 years ago
Did you change something under preferences/privacy & security/SSL/TSL regarding accepted protocol versions?
(Reporter)

Comment 7

2 years ago
Hi Sven,

Nothing changed there : TLS 1.0 up to 1.2 accepted
(Reporter)

Updated

2 years ago
OS: Unspecified → Windows 10
Hardware: Unspecified → x86_64
(Assignee)

Comment 8

2 years ago
Likely caused by bug 1266836 and another tabbrowser breakage.

Ratty looks like we just need to add this to tabbrowser.xml. Does mailnews also use any prompts?

>> <method name="getBrowserForContentWindow">
>>        <parameter name="aWindow"/>
>>        <body>
>>          <![CDATA[
>>            var tab = this._getTabForContentWindow(aWindow);
>>            return tab ? tab.linkedBrowser : null;
>>          ]]>
>>        </body>
>>      </method>

Don't have time now. If no one takes the bug I will see that I fix it Friday.
Status: UNCONFIRMED → NEW
Depends on: 1266836
Ever confirmed: true
Flags: needinfo?(philip.chee)
(Assignee)

Comment 9

2 years ago
Created attachment 8788631 [details] [diff] [review]
1300547-getBrowserForContentWindow.patch

It looks like it was thie missing method. Tested with a password protected ftp site.

User agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:51.0) Gecko/20100101 Firefox/51.0 SeaMonkey/2.48a1
Build identifier: 20160906223902
Assignee: nobody → frgrahl
Status: NEW → ASSIGNED
Flags: needinfo?(philip.chee)
Attachment #8788631 - Flags: review?(philip.chee)
(Assignee)

Updated

2 years ago
status-seamonkey2.44: --- → unaffected
status-seamonkey2.45: --- → unaffected
status-seamonkey2.46: --- → unaffected
status-seamonkey2.47: --- → unaffected
status-seamonkey2.48: --- → affected
Flags: needinfo?(dominique)
(Assignee)

Comment 10

2 years ago
Created attachment 8788859 [details] [diff] [review]
1300539-getBrowserForContentWindow.patch

Corrected comment and patch name.
Attachment #8788631 - Attachment is obsolete: true
Attachment #8788631 - Flags: review?(philip.chee)
Attachment #8788859 - Flags: review?(philip.chee)

Updated

2 years ago
Duplicate of this bug: 1301036

Comment 12

2 years ago
Comment on attachment 8788859 [details] [diff] [review]
1300539-getBrowserForContentWindow.patch

> +      <method name="getBrowserForContentWindow">
> +        <parameter name="aWindow"/>
> +        <body>
> +          <![CDATA[
> +            var tab = this._getTabForContentWindow(aWindow);
> +            return tab ? tab.linkedBrowser : null;
> +          ]]>
> +        </body>
> +      </method>

So getBrowserForContentWindow calls _getTabForContentWindow which does this:

>             const browsers = this.browsers;
>             for (var i = 0; i < browsers.length; ++i)
>               if (browsers[i].contentWindow == aWindow)
>                 return this.tabs[i];

>             return null;

Finds a browser and returns the tab that is linked to the browser.
getBrowserForContentWindow then takes the tab and finds the browser linked to it.

I think we can just unwind the dependency by doing:

      <method name="getBrowserForContentWindow">
        <parameter name="aWindow"/>
        <body>
          <![CDATA[
            const browsers = this.browsers;
            for (let browser of browsers) {
              if (browser.contentWindow == aWindow)
                return browser;
            }
            return null;
          ]]>
        </body>
      </method>

Firefox does it their way because they have to deal with multiprocess browser tabs.
Attachment #8788859 - Flags: review?(philip.chee) → review-
(Assignee)

Comment 13

2 years ago
Created attachment 8789820 [details] [diff] [review]
1300539-getBrowserForContentWindow-V2.patch

seems to work
Attachment #8788859 - Attachment is obsolete: true
Attachment #8789820 - Flags: review?(philip.chee)

Comment 14

2 years ago
Comment on attachment 8789820 [details] [diff] [review]
1300539-getBrowserForContentWindow-V2.patch

r=me a=me
Attachment #8789820 - Flags: review?(philip.chee) → review+
(Assignee)

Comment 15

2 years ago
Fixed until further notice. Please check the next nightly build:

https://hg.mozilla.org/comm-central/rev/65bcae326215
Status: ASSIGNED → RESOLVED
Last Resolved: 2 years ago
status-seamonkey2.48: affected → fixed
Resolution: --- → FIXED
(Reporter)

Comment 16

2 years ago
Verified working on User agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:51.0) Gecko/20100101 Firefox/51.0 SeaMonkey/2.48a1

Thanks !!
Status: RESOLVED → VERIFIED
You need to log in before you can comment on or make changes to this bug.