How to redirect on backend for Angular application using Itfoxtec to access app through Azure Active Directory

574 Views Asked by At

I am new to using ITfoxtec for Azure Active Directory SAML logins. I read the StackOverflow entry for Nuget ITfoxtec SAML & Angular (and other similar entries for CORS issues), but I still do not understand how to adapt the GitHub Angular example from https://github.com/ITfoxtec/ITfoxtec.Identity.Saml2 to my needs. When running the ITfoxtec GitHub example, the Login method of the AuthController.cs file is immediately executed when I launch the test Angular application, and brings up the Azure Active Directory login prompt.

For my application, I need to click a "Login using Azure Active Directory" button on the Angular front end to call a backend method that can then redirect to another method to attempt login.

.NetCore C# code:

SSOController.cs file:
// This method is called by an Angular front end button when the user wishes to log in via Azure Active Directory SSO
        [AllowAnonymous]
        [Route("AzureAuth")]
        [HttpGet]
        public IActionResult AzureAuth(string returnUrl = null)
        {
                    var binding = new Saml2RedirectBinding();
                    Saml2Configuration config = GetSamlConfig();

                    binding.SetRelayStateQuery(new Dictionary<string, string> { { relayStateReturnUrl, returnUrl ?? Url.Content("https://localhost:44397/api/sso/AssertionConsumerService") } });
                    //return binding.Bind(new Saml2AuthnRequest(config)).ToActionResult();  
// This gives a CORS error, so we have do ensure that we do the redirection at the backend
// so we try redirecting with "RedirectToAction"
                     return RedirectToAction("https://localhost:44397/api/sso/AssertionConsumerService"); 

        }

My AssertionConsumerService() method (located in Dev at "https://localhost:44397/api/sso/AssertionConsumerService"), which I need to be redirected to:

        [Route("AssertionConsumerService")]
        [HttpPost]
        public async Task<IActionResult> AssertionConsumerService(HttpRequestMessage request)
        {
// After user enters AAD SSO information, redirect should point to here.
// This API endpoint is hit if I test from Azure Enterprise Application SSO testing with the redirect API set to this method.
// I do not understand how to do backend redirects from AzureAuth() method to this method, and ensure that the HTTP request data is correct.
}
2

There are 2 best solutions below

0
On

Just a follow up to my own question. For logging in directly from the Angular front end, I am having success with using "@azure/msal-angular". Once the end user clicks the "Log in with Azure Active Directory" button and is authenticated back to the frontend, I forward the authentication details to the backend for authorization checks.

I am still using ITfoxtec at the backend to process what can be directly sent from the "Azure Enterprise Applications > Set up single sign on > Test single sign-on with ..." for testing purposes. With the Azure "App registrations > Authentication > Platform Configuration" set to "Single-Page Application", I am making good progress in development and testing.

0
On

Sounds like you got a solution. You can load the Angular application before login if it is hosted a place in the ASP.NET application that do not require the user to be authenticated. Then you can start the login process your selv and validate if the user is authenticated.