Having trouble logging out of ADFS 3.0 using Internet Explorer

We have successfully created an MVC/Angular application integrated with ADFS. Due to the Angular framework, a wrapper had to be developed around ADFS in order to capture the token and utilize it as a claim for access within angular.

The primary method responsible for this functionality is as follows:

 public async override Task Invoke(IOwinContext context)
    {
        if (context.Request.Path.StartsWithSegments(new PathString(ConfigurationManager.AppSettings["AuthorizationCodeResponsePath"])))
        {
            var authorizationCode = context.Request.Query[ConfigurationManager.AppSettings["AuthorizationCodeResponseParameter"]];

            var token = this.RequestToken(
                this.Options.TokenEndpoint,
                new Uri(this.Options.ApplicationUri, ConfigurationManager.AppSettings["AuthorizationCodeResponsePath"]),
                this.Options.ClientId,
                authorizationCode);

            var principal = this.ValidateToken(token, this.Options.Audience, this.Options.Issuer, this.Options.Certificate);

            this.AddTokenToPrincipal(principal, token);

            this.SignIn(context.Authentication, principal);

            context.Response.Redirect(this.Options.RedirectPath.Value);
        }
        else if (context.Request.Path.StartsWithSegments(new PathString(ConfigurationManager.AppSettings["SignOutPath"])))
        {
            if (context.Request.Query.Any(q => q.Key == "post_logout_redirect_uri"))
            {
                context.Response.Redirect(ConfigurationManager.AppSettings["ADFS"] + "/adfs/ls/?wa=wsignoutcleanup1.0");
            }
            else
            {
                this.SignOut(context.Authentication);
            }
        }
        else
        {
            await this.Next.Invoke(context);
        }
    }

In essence, upon logging in, users are signed into ADFS which then redirects to a specific URL captured in the initial block of code. The authorization code is obtained from here to request a token, add a claim, and proceed with signing in.

The challenge arises during sign out. When the application triggers a sign out request, the URL is caught in the second block resulting in a sign out action redirecting to the ADFS page. Although the .AspNet.Federation cookie appears expired or removed, reloading the page prompts the application to request a new one. This functionality operates smoothly on Chrome/Firefox; however, in Internet Explorer, clearing cookies upfront enables successful sign out completion. Is there a missing element that should be considered?

Answer №1

I was able to fix this by running the command below:

document.execCommand("ClearAuthenticationCache")

Similar questions

If you have not found the answer to your question or you are interested in this topic, then look at other similar questions below or use the search

Restrict the character count in Vue Material chips

Currently, I am utilizing the Vue Material Chips component to gather string arrays. My goal is to limit the character length of each string within the array to 30 characters. The component offers a md-limit prop which restricts the number of strings in th ...

What is the best way to fetch HTML content using JavaScript?

I needed to incorporate JavaScript for fetching HTML code. I structured the HTML code in the following manner; <html> <div id="tesingCode"> <h1>Title</h1> <p>testOfCodetestOfCodetestOfCodetestOfCode</p> </div ...

What could be causing the data in the data table to remain undeleted unless the page is manually refreshed

I am facing an issue with the delete button functionality. When I press the button, it successfully deletes the row but requires a page refresh to make the deleted row disappear. How can I resolve this problem and ensure that the row is deleted without the ...

Eliminate screen flickering during initial page load

I've been developing a static website using NuxtJS where users can choose between dark mode and default CSS media query selectors. Here is the code snippet for achieving this: <template> <div class="container"> <vertical-nav /> ...

What could be preventing me from exporting and applying my custom JavaScript styles?

This is my primary class import React, { Component } from 'react'; import { withStyles } from '@material-ui/core/styles'; import styles from './FoodStyles'; class Food extends Component { render () { return ( & ...

"Encountering a duplicate key error when performing a bulk upsert operation with LoopbackJS and MongoDB

Attempting to perform batch upserts of multiple documents at once using a PUT request to a loopback-based Rest API. The request body consists of an array of JSON objects. [ {"_id" : "1", "data" : "foo" }, {"_id" : "2", "data" : "bar" ...

Storing extensive JSON data with AJAX, jQuery, and Java

Currently, I am utilizing jQuery AJAX to call a server-side method and sending a JSON string to the controller. Everything works smoothly when the JSON size is small, but as soon as it exceeds 7kb, the server side rejects the JSON string. I suspect that t ...

Using Jquery to create interactive and dynamic webpage elements

I am struggling with a paragraph containing words in a span that are editable upon clicking. The content needs to be dynamically called, but my current approach is not effective. Can anyone provide a solution or a better way to achieve this? Feel free to ...

How can I add a parameter to a JSON URL in Angular?

I'm looking to enhance my URL by adding a new parameter, but I'm unsure of the steps needed. ts.file route(name:string) { this.router.navigate(['/homepage', (name)]); console.log('name); } service private url1 = './assets/ ...

Ways to perform a force click on a span element when clicking on a glyphicon

There is a table cell containing two span elements: <span contentEditable=true class="editspan"></span> <span class="pencilspan glyphicon glyphicon-pencil pull-right"></span>" When clicking on span1, an input box appears for editi ...

Interactive Notification System with MySQL, AJAX, and PHP

Seeking assistance for code conversion from async ajax to sync ajax. The current code is causing system lag after 20 minutes of inactivity. Likely issue resides within the code snippet provided below. function addmsg20(type, msg, data) { $('# ...

Looking to Identify a Click Within a Complicated Component and Retrieve the Component's ID

Currently, I am working with React for development and have a need to capture clicks at the topmost parent level for performance reasons. const clickHandler = (e) => { console.log("clickHandler", e.target) --> I want to identify the child ...

Steps for implementing a reset button in a JavaScript slot machine game

I need assistance with implementing a reset button for my slot machine game prototype written in JS. I attempted to create a playAgain function to restart the game by calling the main game function, but it's not working as expected. Do I need to pass ...

Glitch found in Safari involving innerText of elements

Hey everyone, I posted this question not too long ago but now I have some images to share regarding the issue with Safari. When checking the console in Safari, the following text is displayed: <div id="rot3posDisp" class="rotDisp">C</div> Ho ...

Steps for displaying a post's image when hovering over its link in WordPress

One section of my website displays the latest 6 posts, and here is the HTML code for it: <div class="latest-posts"> <div id="latest-posts-title"> <p>Latest Posts</p> </div> <div id="latest-posts-pictures" ...

What is the best way to remove double quotes surrounding "name" and "count" when displayed in the JavaScript console output?

I am struggling to transform the input: ["apple", "banana", "carrot", "durian", "eggplant", "apple", "carrot"] into the desired output: [{ name: "Apple", count: 2 }, { name: ...

Guide on converting JSON object to condensed rows when using ng-repeat

From the database, I am receiving a JSON object which is one large object: $scope.totalsum = { "A1": 1155000, "A2": null, "A3": 2133, "A31": 29292, "A32": 2321, "A33": 232342, ...

Extracting data from a JQGrid in HTML5 Builder: a beginner's guide

Apologies for asking this question as I couldn't find any relevant posts addressing it specifically in relation to HTML5 builder. I am trying to retrieve the value of the "ID" column, which happens to be the last column among the four, based on the r ...

Utilizing AngularJS for seamlessly closing Bootstrap Modal Popup

Having recently delved into AngularJS, I am seeking assistance with a particular issue; In my AngularJS (v 1.6) application, there is a Bootstrap modal window for user login. Once the user successfully logs in, I wish for Angular to automatically close the ...

Enable the ability for anchor links to be clickable when the CSS media print format is used to generate

To illustrate: <a href="https://www.google.com">Google anchor link</a> on the website, it displays as: Google anchor link When printed, it shows as: Google anchor link(https://www.google.com) To address this issue, I included in the CSS: ...