OWA SSO with ADFS fails on Firefox - single-sign-on

I have successfully completed SSO between OWA and ADFS.
Now the problem is the SSO only works on Chrome and not on Firefox.
On Firefox, OWA sends multiple requests to ADFS and after 6 requests, ADFS gives an error.
ADFS version: 4.0
Windows Server: 2016 Standard
Below is the error from ADFS:
Exception details:
Microsoft.IdentityServer.Web.InvalidRequestException: MSIS7042: The same client browser session has made '6' requests in the last '6' seconds. Contact your administrator for details.

Firefox does not automatically perform Kerberos authentication against any sites. You must manually add sites to a trusted sites list.
To enable Kerberos authentication in Firefox:
Open Firefox and enter about:config in the address bar, Dismissing warnings that appear.
In the Filter field, enter negotiate.
Double-click the network.negotiate-auth.trusted-uris preference.
This preference lists the trusted sites for Kerberos authentication.
In the dialog box, enter the fully qualified domain name of the ADFS server, for example adfs.example.com.
Click the OK button.
The domain that you just entered in the network.negotiate-auth.trusted-uris should now appear in Value column. This setting takes effect immediately; you do not have to restart Firefox.

Related

Caching TGT from browser/other krb5 client

I'm playing around with Kerberos SSO. As experimented so far,
When I open a web app that is configured with Kerberos, from the browser, it prompts me for the username and credential, once I enter, I'm logged into the web app .
When I do a kinit from the terminal and give my credentials, I'm signed into the KDC for the given user. After kinit, when I open a web app I'm signed into the web app, without any credentials.
One possible explanation is, when I do a kinit, the TGT is stored in the OS which is available for other clients in the host machine so that my browser was able to use that TGT without prompting me for password.
Now my questions are,
Will I be able to cache the TGT without using kinit?
If yes, how can I do it using a Java client?
If the answer for the first question is yes, will I be able to do it from my web app opened in the browser?
Whenever kinit is executed, a TGT is requested and stored in OS ticket cache.
This TGT can be used to get TGS (service ticket) for multiple services.
If you haven't added your app url as a 'trusted intranet site' in browser, then browser will give you pop-up for the first time for every new session.
Browser accepts the credentials, gets the TGT from your KDC, and puts it in cache. Furthermore, using this TGT, it ask the KDC for the TGS to your app url (usually identified as "HTTP(S)/APP_SERVER_HOSTNAME").
You can verify this-
Perform klist purge to clean all the tickets from cache.
Open browser and hit your app url.
Provide credentials in pop-up and submit.
Execute klist- observe there are two tickets in cache.
One of the ticket is TGT, which spn like - krbtgt#XXX.domain.
The other is TGS for your service - usually "HTTP(S)/APP_SERVER_HOSTNAME".
Please note:
TGT is created by default when you login to the OS. So you can see there's a TGT for your user in OS cache.
OS ticket cache behavior can be platform specific (not verified by me).
You can obtain TGT/TGS or even delegate the credentials using (java)code.
Cache mentioned in your KRB conf is not necessarily the OS ticket cache.
For credential delegation, check out this - Java SPNEGO Authentication & Kerberos Constrained Delegation (KCD) to backend service

Cannot open Microsoft Dynamics NAV service links in a browser

I need to integrate Microsoft Dynamics NAV web services on the website. They provided me with a list of services URLs to access in a browser to see the XML structure. When I open, I see Sign In window, I enter username and password but window still prompts me to enter details. My IP is whitelisted, server IP as well and I send SOAP requests from server's specific IP. But no results.
I asked them and they told that they can see the XML in a browser. For me, I can imagine why I cannot get any results because if in browser the authentication is not working, it will not work for the server requests too.
I tried to turn off antivirus, restart the internet, tried with other PC,etc...but nothing, same result - looped sign in window
(see the attachment).
Any ideas please? Thanks
This is also not working for me in Chrome. It works in IE/Edge with the credential manager from windows and in Firefox with basic credentials.
You could try to use the Boomerang SOAP and REST Client for Chrome.
I use Web Services only with IE/Edge.
In the background of your Screenshot the page says that you are not authorized (HTTP 401). Is your user also a user in Dynamics NAV/Business Central?

SSO waffle asking username and password

I am trying to run demo of waffle 'waffle filter demo' download from
http://repo1.maven.org/maven2/com/github/dblock/waffle/waffle-filter-demo/1.6/waffle-filter-demo-1.6.war
I am using tomcat as servlet container and deployed the war file.
When I try to access the server with URL http:// localhost:8080/waffle-filter-demo-1.6/ I am able to get authenticated through current windows login and my windows user is authenticated.
But when I access the same url using IP address http:// 192.168.2.63:8080/waffle-filter-demo-1.6/. Waffle is asking me to enter username and password.
Anyone came across this scenario before? How can I get authentication success by access using IP address?
I've solved this problem following https://community.jalios.com/jcms/jx_73408/en/windows-authentication-waffle-plugin-12?cid=jc_84212.
You have to configure the web browser in order for Windows authentication to be sent to remote HTTP server.
To configure Internet Explorer for automatic logon
Open the Internet Options dialog box by choosing Internet Options either from Control Panel or from the Tools menu in Internet Explorer.
In the Internet Options dialog box, on the Security tab, select Local intranet, and then click Custom Level.
In the Security Settings dialog box, under Logon, select Automatic logon only in Intranet zone, and then click OK.
In the Internet Options dialog box on the Security Settings tab with Local intranet still selected, click Sites.
In the Local intranet dialog box, click Advanced.
In the next dialog box (also titled Local intranet), type the URL of your JCMS web site (for example, https://intranet.mycompany.com) in the Add this Web site to the zone box, and then click Add.
In the Local intranet dialog, box click OK.
In the original Local intranet dialog box, click OK.
In the Internet Options dialog box, click OK.
Google Chrome
Google chrome is automatically configured to send the proper credential.
Firefox
The domain of the HTTP server must be added to the trusted domain for Negotiate authentication, using preference network.negotiate-auth.trusted-uris, either through about:config (in address bar) or in prefs.js (in user profil directory).
Read Mozilla.org - Integrated Authentication for more information.
Internet Options from the Internet explorer is applicable for all the browsers. And so If the "Logon From Intranet " option is disabled, it will ask the User name and the password accross all the browsers .
Solution :
Go to Internet Options -> Security -> Custom Level -> Scroll To END ("User authentication") -> Choose either "Automatic logon only in Intranet zone" OR "Automatic logon with current user name and password" .
Sometimes "Automatic logon only in Intranet zone" doesnt work for IP address of other machines within the same network because the browser assumes it as the open IP(Internet).In this case add the ip of the target machine on "Sites"->Advanced. eg : https://10.11.12.13 in the list It should work now !
"Automatic logon with current user name and password" Should solve this issue for any machine across the internet/intranet.

Challenge window from ADFS when on the corporate network

I just read the article here: http://www.asp.net/aspnet/overview/developing-apps-with-windows-azure/building-real-world-cloud-apps-with-windows-azure/single-sign-on
I have just finished building an app that can authenticate users via WAAD, or via a local installation of ADFS on their corporate network (configuration point allows them to select one or the other).
The app will be hosted in Azure. Can someone tell me if it is possible for users who are on their corporate network to login to this Azure app WITHOUT entering their credentials?
Here is the flow:
user navigates to the cloud app
FAM detects they aren't authenticated, and redirects the browser to their ADFS server on the corporate network
ADFS server replies with 401 challenge (I assume this is what's happening)
user sees a user name/password box, and enters in credentials
user is redirected back to the cloud app with a token containing their claims
I don't understand why #4 is required if the user is already on their corporate network. Shouldn't ADFS use Windows Authentication here so they don't have to enter their password? Is there a way to configure ADFS to do this?
Thank you!
This can be accomplished by adding the Url of the ADFS endpoint to the local intranet or trusted sites of Internet Explorer. By default Internet Explorer will pass in the Windows credentials to sites in those two groups. If that doesn't work, you would have to double check that setting hasn't been modified.

Windows Intergrated Authentication with reverse proxy issue with Safari

I'm having a application which has Windows Integrated Authentication, for internet users we are having a reverse proxy which has a IIS server which will authenticate using basic authentication then redirected to the actual application, every thing works as expected in IE and firefox but in safari there is a second login dialog box appers.
When I did a packet capture using wireshark I noticed that in IE and FF the basic authetication which is carried forwared to the actual application from IIS server but in Safari there is a NTLM negotion in between because of this my application asks for one more login dialog. Dose any one knows why safari is behaving like this?
It seems like there is an issue with basic authentication and HTTP redirection