protected override async Task HandleChallengeAsync(AuthenticationProperties properties)
        {
            System.Console.WriteLine("");
            System.Console.WriteLine("[Saml2Handler][HandleChallengeAsync] =>");

            _logger.LogDebug($"Entering {nameof(HandleChallengeAsync)}", properties);

            properties = properties ?? new AuthenticationProperties();

            var authnRequestId = CreateUniqueId();

            properties.Items.Add(AuthnRequestIdKey, authnRequestId);


            System.Console.WriteLine("[Saml2Handler][HandleChallengeAsync] => AuthnRequestIdKey: " + AuthnRequestIdKey);
            System.Console.WriteLine("[Saml2Handler][HandleChallengeAsync] => authnRequestId: " + authnRequestId);

            await _sessionStore.SaveAsync <AuthenticationProperties>(properties);

            var requestUrl = _samlService.GetAuthnRequest(authnRequestId, null,
                                                          $"{Request.GetBaseUrl()}/{Options.AssertionConsumerServiceUrl}");


            System.Console.WriteLine("[Saml2Handler][HandleChallengeAsync] => requestUrl: " + requestUrl);

            System.Console.WriteLine("");
            _logger.LogDebug($"Method={nameof(HandleChallengeAsync)}. Redirecting to saml identity provider for SSO. Url={requestUrl}");
            System.Console.WriteLine("");

            Context.Response.Redirect(requestUrl, true);
        }
Exemple #2
0
        protected override Task HandleChallengeAsync(AuthenticationProperties properties)
        {
            _logger.LogDebug($"Entering {nameof(HandleChallengeAsync)}", properties);

            var authnRequestId = CreateUniqueId();

            var deleteCookieOptions = Options.RequestIdCookie.Build(Context, Clock.UtcNow);

            Response.DeleteAllRequestIdCookies(Context.Request, deleteCookieOptions);

            var isPassive = false;
            var forceAuth = false;

            foreach (var item in properties.Items)
            {
                if (item.Key == "IsPassive")
                {
                    isPassive = item.Value == "true";
                }
                if (item.Key == "ForceAuth")
                {
                    forceAuth = item.Value == "true";
                }
            }

            var cookieOptions = Options.RequestIdCookie.Build(Context, Clock.UtcNow);

            Response.Cookies.Append(Options.RequestIdCookie.Name, Options.StringDataFormat.Protect(authnRequestId), cookieOptions);

            var relayState = Options.StateDataFormat.Protect(properties);
            var requestUrl = _samlService.GetAuthnRequest(authnRequestId, relayState,
                                                          $"{Request.GetBaseUrl()}/{Options.AssertionConsumerServiceUrl}", isPassive, forceAuth);

            _logger.LogDebug(
                $"Method={nameof(HandleChallengeAsync)}. Redirecting to saml identity provider for SSO. Url={requestUrl}");
            Context.Response.Redirect(requestUrl, true);
            Context.Response.StatusCode = 200;
            return(Task.CompletedTask);
        }
        protected override Task HandleChallengeAsync(AuthenticationProperties properties)
        {
            _logger.LogDebug($"Entering {nameof(HandleChallengeAsync)}", properties);

            var authnRequestId = CreateUniqueId();

            var deleteCookieOptions = Options.RequestIdCookie.Build(Context, Clock.UtcNow);

            Response.DeleteAllRequestIdCookies(Context.Request, deleteCookieOptions);

            var cookieOptions = Options.RequestIdCookie.Build(Context, Clock.UtcNow);

            Response.Cookies.Append(Options.RequestIdCookie.Name, Options.StringDataFormat.Protect(authnRequestId),
                                    cookieOptions);

            var relayState = Options.StateDataFormat.Protect(properties);
            var requestUrl = _samlService.GetAuthnRequest(authnRequestId, relayState,
                                                          $"{Request.GetBaseUrl()}/{Options.AssertionConsumerServiceUrl}");

            _logger.LogDebug(
                $"Method={nameof(HandleChallengeAsync)}. Redirecting to saml identity provider for SSO. Url={requestUrl}");
            Context.Response.Redirect(requestUrl, true);
            return(Task.CompletedTask);
        }