How to fix error 404 when logging out on an ASP.NET Core MVC app against Azure AD?
Solution 1:
In (at least) the latest versions you should add
endpoints.MapRazorPages();
in the Configure() method of Startup. This handles the route for you.
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
endpoints.MapRazorPages();//ADD THIS LINE
});
Solution 2:
Turns out this is a known issue in Microsoft.AspNetCore.Authentication.AzureAD.UI
; that package implements the Azure AD authentication/authorization flow in ASP.NET Core, and part of that is an embedded AccountController
(area AzureAD
) that takes the signin - signout processes out of your shoulders. Problem is, the SignOut
action hardcodes a redirect to /Account/SignOut?page=%2FAccount%2FSignedOut
once the signout process is complete, and there's the problem.
I managed to solve it by implementing a small AccountController (without an area) and adding a single SignOut
action that handles the redirect from Microsoft.AspNetCore.Authentication.AzureAD.UI
's AccountController
:
[AllowAnonymous]
public class AccountController : Controller
{
[HttpGet]
public IActionResult SignOut(string page)
{
return RedirectToAction("Index", "Home");
}
}