public async Task <IActionResult> LoginCallback(string returnUrl)
        {
            //authenticate Facebook user
            var authenticateResult = await this.HttpContext.AuthenticateAsync(LinkedInExternalAuthConstants.LinkedInAuthenticationScheme);

            if (!authenticateResult.Succeeded || !authenticateResult.Principal.Claims.Any())
            {
                return(RedirectToRoute("Login"));
            }

            //create external authentication parameters
            var authenticationParameters = new ExternalAuthenticationParameters
            {
                ProviderSystemName = LinkedInExternalAuthConstants.ProviderSystemName,
                //AccessToken = await this.HttpContext.GetTokenAsync(FacebookDefaults.AuthenticationScheme, "oauth2_access_token"),

                Email = authenticateResult.Principal.FindFirst(claim => claim.Type == ClaimTypes.Email)?.Value,
                ExternalIdentifier        = authenticateResult.Principal.FindFirst(claim => claim.Type == ClaimTypes.NameIdentifier)?.Value,
                ExternalDisplayIdentifier = authenticateResult.Principal.FindFirst(claim => claim.Type == ClaimTypes.Name)?.Value,
                Claims = authenticateResult.Principal.Claims.Select(claim => new ExternalAuthenticationClaim(claim.Type, claim.Value)).ToList()
            };

            //authenticate Nop user
            return(_externalAuthenticationService.Authenticate(authenticationParameters, returnUrl));
        }
        public async Task <IActionResult> LoginCallback(string returnUrl)
        {
            var authenticateResult = await this.HttpContext.AuthenticateAsync(OAuth2AuthenticationDefaults.AuthenticationScheme);

            if (!authenticateResult.Succeeded || !authenticateResult.Principal.Claims.Any())
            {
                return(RedirectToRoute("Login"));
            }

            var authenticationParameters = new ExternalAuthenticationParameters
            {
                ProviderSystemName = OAuth2AuthenticationDefaults.SystemName,
                AccessToken        = await this.HttpContext.GetTokenAsync(OAuth2AuthenticationDefaults.AuthenticationScheme, OAuth2AuthenticationDefaults.AccessTokenName),
                Email = authenticateResult.Principal.FindFirst(claim => claim.Type == ClaimTypes.Email)?.Value,
                ExternalIdentifier        = authenticateResult.Principal.FindFirst(claim => claim.Type == ClaimTypes.NameIdentifier)?.Value,
                ExternalDisplayIdentifier = authenticateResult.Principal.FindFirst(claim => claim.Type == ClaimTypes.Name)?.Value,
                Claims = authenticateResult.Principal.Claims.Select(claim => new ExternalAuthenticationClaim(claim.Type, claim.Value)).ToList()
            };

            return(_externalAuthenticationService.Authenticate(authenticationParameters, returnUrl));
        }
        public async Task <IActionResult> LoginCallback(string returnUrl)
        {
            string authenticationName = string.Empty;
            var    urlPath            = _httpContextAccessor.HttpContext.Request.Path;

            if (urlPath.HasValue)
            {
                var socialMediaList = new SocialMediaList();
                authenticationName = socialMediaList.SocialMedias.Where(x => "/" + x.CallBackPath.ToLower() == urlPath.Value).Select(x => x.Name).FirstOrDefault();
            }

            //authenticate social user
            var authenticateResult = await this.HttpContext.AuthenticateAsync(authenticationName);

            if (!authenticateResult.Succeeded || !authenticateResult.Principal.Claims.Any())
            {
                return(RedirectToRoute("Login"));
            }

            string email = authenticateResult.Principal.FindFirst(claim => claim.Type == ClaimTypes.Email)?.Value;

            if (string.IsNullOrEmpty(email))
            {
                email = authenticateResult.Principal.FindFirst(claim => claim.Type == ClaimTypes.Name)?.Value + "@" + authenticateResult.Principal.Identity.AuthenticationType + ".com";
            }

            //create external authentication parameters
            var authenticationParameters = new ExternalAuthenticationParameters
            {
                ProviderSystemName = AuthenticationDefaults.PluginSystemName,
                AccessToken        = await this.HttpContext.GetTokenAsync(authenticationName, "access_token"),
                Email = email,
                ExternalIdentifier        = authenticateResult.Principal.FindFirst(claim => claim.Type == ClaimTypes.NameIdentifier)?.Value,
                ExternalDisplayIdentifier = authenticateResult.Principal.FindFirst(claim => claim.Type == ClaimTypes.Name)?.Value,
                Claims = authenticateResult.Principal.Claims.Select(claim => new ExternalAuthenticationClaim(claim.Type, claim.Value)).ToList()
            };

            //authenticate Nop user
            return(_externalAuthenticationService.Authenticate(authenticationParameters, returnUrl));
        }
        public async Task <IActionResult> FacebookLoginCallback(string returnUrl)
        {
            //authenticate Facebook user
            var authenticateResult = await HttpContext.AuthenticateAsync(FacebookDefaults.AuthenticationScheme);

            if (!authenticateResult.Succeeded || !authenticateResult.Principal.Claims.Any())
            {
                return(RedirectToRoute("Login"));
            }

            //create external authentication parameters
            var authenticationParameters = new ExternalAuthParam {
                ProviderSystemName = FacebookAuthenticationDefaults.ProviderSystemName,
                AccessToken        = await HttpContext.GetTokenAsync(FacebookDefaults.AuthenticationScheme, "access_token"),
                Email      = authenticateResult.Principal.FindFirst(claim => claim.Type == ClaimTypes.Email)?.Value,
                Identifier = authenticateResult.Principal.FindFirst(claim => claim.Type == ClaimTypes.NameIdentifier)?.Value,
                Name       = authenticateResult.Principal.FindFirst(claim => claim.Type == ClaimTypes.Name)?.Value,
                Claims     = authenticateResult.Principal.Claims.ToList()
            };

            //authenticate Grand user
            return(await _externalAuthenticationService.Authenticate(authenticationParameters, returnUrl));
        }
Пример #5
0
        public async Task <IActionResult> LoginCallback(string returnUrl)
        {
            //authenticate Facebook user
            var authenticateResult = await this.HttpContext.AuthenticateAsync(LinkedInAuthenticationDefaults.LINKED_IN_AUTHENTICATION_SCHEME);

            if (!authenticateResult.Succeeded || !authenticateResult.Principal.Claims.Any())
            {
                return(RedirectToRoute("Login"));
            }

            //create external authentication parameters
            var authenticationParameters = new ExternalAuthenticationParameters
            {
                ProviderSystemName = LinkedInAuthenticationDefaults.PROVIDER_SYSTEM_NAME,
                Email = authenticateResult.Principal.FindFirst(claim => claim.Type == ClaimTypes.Email)?.Value,
                ExternalIdentifier        = authenticateResult.Principal.FindFirst(claim => claim.Type == ClaimTypes.NameIdentifier)?.Value,
                ExternalDisplayIdentifier = authenticateResult.Principal.FindFirst(claim => claim.Type == ClaimTypes.Name)?.Value,
                Claims = authenticateResult.Principal.Claims.Select(claim => new ExternalAuthenticationClaim(claim.Type, claim.Value)).ToList()
            };

            //authenticate Nop user
            return(_externalAuthenticationService.Authenticate(authenticationParameters, returnUrl));
        }
        public async Task <IActionResult> LoginCallback(string returnUrl)
        {
            //authenticate Facebook user
            var authenticateResult = await this.HttpContext.AuthenticateAsync(OpenIdConnectDefaults.AuthenticationScheme);

            if (!authenticateResult.Succeeded || !authenticateResult.Principal.Claims.Any())
            {
                return(RedirectToRoute("IdentityServerLogin"));
            }

            //create external authentication parameters
            var authenticationParameters = new ExternalAuthenticationParameters
            {
                ProviderSystemName = IdentityServerAuthenticationDefaults.ProviderSystemName,
                AccessToken        = await this.HttpContext.GetTokenAsync(OpenIdConnectDefaults.AuthenticationScheme, "access_token"),
                Email = authenticateResult.Principal.FindFirst(claim => claim.Type == "email")?.Value,
                ExternalIdentifier        = authenticateResult.Principal.FindFirst(claim => claim.Type == "sub")?.Value,
                ExternalDisplayIdentifier = authenticateResult.Principal.FindFirst(claim => claim.Type == "name")?.Value,
                Claims = authenticateResult.Principal.Claims.Select(claim => new ExternalAuthenticationClaim(claim.Type, claim.Value)).ToList()
            };

            //authenticate Nop user
            return(_externalAuthenticationService.Authenticate(authenticationParameters, returnUrl));
        }
        public IActionResult SignIn(SignInViewModel model, string returnUrl)
        {
            if (!_authenticationPluginManager
                .IsPluginActive("ExternalAuth.NovellActiveDirectory", _workContext.CurrentCustomer, _storeContext.CurrentStore.Id))
            {
                throw new NopException("Novell Active Directory authentication module cannot be loaded");
            }

            if (string.IsNullOrEmpty(_novellActiveDirectoryExternalAuthSettings.LdapPath))
            {
                throw new NopException("Novell Active Directory authentication module not configured");
            }

            IActionResult result;

            if (string.IsNullOrEmpty(model.AdUserName))
            {
                ExternalAuthorizerHelper.AddErrorsToDisplay(_localizationService.GetResource("Plugins.ExternalAuth.NovellActiveDirectory.WindowsUserNotAvailable"));
                result = new RedirectToActionResult("Login", "Customer", (!string.IsNullOrEmpty(returnUrl)) ? new
                {
                    ReturnUrl = returnUrl
                } : null);
            }
            else
            {
                LdapUser ldapUser;
                try
                {
                    ldapUser = _ldapService.GetUserByUserName(model.AdUserName);
                    if (null == ldapUser)
                    {
                        ExternalAuthorizerHelper.AddErrorsToDisplay(_localizationService.GetResource("Plugins.ExternalAuth.NovellActiveDirectory.UserNotFound"));
                        return(new RedirectToActionResult("Login", "Customer", (!string.IsNullOrEmpty(returnUrl)) ? new
                        {
                            ReturnUrl = returnUrl
                        } : null));
                    }
                }
                catch (Exception e)
                {
                    ExternalAuthorizerHelper.AddErrorsToDisplay(_localizationService.GetResource("Plugins.ExternalAuth.NovellActiveDirectory.LdapError : " + e));
                    return(new RedirectToActionResult("Login", "Customer", (!string.IsNullOrEmpty(returnUrl)) ? new
                    {
                        ReturnUrl = returnUrl
                    } : null));
                }

                try
                {
                    bool flag6 = _ldapService.Authenticate(ldapUser.DistinguishedName, model.AdPassword);
                    if (flag6)
                    {
                        ExternalAuthenticationParameters authenticationParameters = new ExternalAuthenticationParameters
                        {
                            ProviderSystemName = "ExternalAuth.NovellActiveDirectory",
                            AccessToken        = Guid.NewGuid().ToString(),
                            Email = ldapUser.Email,
                            ExternalIdentifier        = ldapUser.Email,
                            ExternalDisplayIdentifier = ldapUser.Email
                        };
                        return(_externalAuthenticationService.Authenticate(authenticationParameters, returnUrl));
                    }
                }
                catch (Exception e)
                {
                    ExternalAuthorizerHelper.AddErrorsToDisplay(_localizationService.GetResource("Plugins.ExternalAuth.NovellActiveDirectory.LdapError : " + "auth " + e));
                    return(new RedirectToActionResult("Login", "Customer", (!string.IsNullOrEmpty(returnUrl)) ? new
                    {
                        ReturnUrl = returnUrl
                    } : null));
                }
            }

            ExternalAuthorizerHelper.AddErrorsToDisplay(
                _localizationService.GetResource("Plugins.ExternalAuth.NovellActiveDirectory.LdapError"));
            result = new RedirectToActionResult("Login", "Customer",
                                                (!string.IsNullOrEmpty(returnUrl)) ? new { ReturnUrl = returnUrl } : null);
            return(result);
        }