Adrian Vlad
Adrian Vlad

Reputation: 41

Forms and Azure AD Authentication

I am trying to develop a MVC ASP.NET C# Application that can support both Azure AD Authentication and Forms authentication.

I've read about it and came to the following conclusion:

I have a login-form for Forms Auth and a button which redirects me to Azure AD Login.

After I login in AD, it auto redirects me to http://localhost/login.aspx?ReturnUrl=%2f.

Using following code:

Startup.cs

public partial class Startup
    {
        private static string clientId = ConfigurationManager.AppSettings["ida:ClientId"];
        private static string aadInstance = ConfigurationManager.AppSettings["ida:AADInstance"];
        private static string tenant = ConfigurationManager.AppSettings["ida:Tenant"];
        private static string postLogoutRedirectUri = ConfigurationManager.AppSettings["ida:PostLogoutRedirectUri"];

        string authority = String.Format(CultureInfo.InvariantCulture, aadInstance, tenant);

        public void ConfigureAuth(IAppBuilder app)
        {
            app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType);

            app.UseCookieAuthentication(new CookieAuthenticationOptions());

            app.UseOpenIdConnectAuthentication(
                new OpenIdConnectAuthenticationOptions
                {
                    ClientId = clientId,
                    Authority = authority,
                    PostLogoutRedirectUri = postLogoutRedirectUri,
                    RedirectUri = postLogoutRedirectUri,
                    Notifications = new OpenIdConnectAuthenticationNotifications
                    {
                        AuthenticationFailed = context => 
                        {
                            context.HandleResponse();
                            context.Response.Redirect("/Error?message=" + context.Exception.Message);
                            return Task.FromResult(0);
                        }
                    }
                });
        }
    }

AccountController.cs

public void SignIn()
        {
            // Send an OpenID Connect sign-in request.
            if (!Request.IsAuthenticated)
            {
                HttpContext.GetOwinContext().Authentication.Challenge(new AuthenticationProperties { RedirectUri = "/" }, OpenIdConnectAuthenticationDefaults.AuthenticationType);
            }
        }
        public void SignOut()
        {
            // Send an OpenID Connect sign-out request.
            HttpContext.GetOwinContext().Authentication.SignOut(
                OpenIdConnectAuthenticationDefaults.AuthenticationType, CookieAuthenticationDefaults.AuthenticationType);
        }

        public void EndSession()
        {
            // If AAD sends a single sign-out message to the app, end the user's session, but don't redirect to AAD for sign out.
            HttpContext.GetOwinContext().Authentication.SignOut(CookieAuthenticationDefaults.AuthenticationType);
        }

My question is why does it redirects me to http://localhost/login.aspx?ReturnUrl=%2f, giving that the app is a MVC and there is no aspx in my project.

Upvotes: 4

Views: 1726

Answers (1)

rickvdbosch
rickvdbosch

Reputation: 15571

By default, the login URL for Forms authentication is Login.aspx. You can specify the login URL for Windows Forms authentication in the web.config:

<authentication mode="Forms">
  <forms loginUrl="/account/signin" defaultUrl="/" />
</authentication>

More info: FormsAuthentication.LoginUrl Property

Upvotes: 1

Related Questions