public ActionResult Delete(IdentityProviderViewModel model)
        {
            var idp = Mapper.Map <IdentityProvider>(model);

            _idpSvc.Remove(idp);
            TempData["SuccessMessage"] = "Identity provider has been successfully deleted";
            return(RedirectToAction("Index", new { id = "" }));
        }
        public HttpResponseMessage Get()
        {
            var x = ComponentSpace.SAML2.SAMLController.Configuration.LocalIdentityProviderConfiguration;

            // TODO : Map path better?
            var certFilename          = HttpContext.Current.Server.MapPath("~/" + x.LocalCertificateFile);
            var certificateCollection = new X509Certificate2Collection();

            certificateCollection.Import(certFilename, x.LocalCertificatePassword, X509KeyStorageFlags.DefaultKeySet);

            var certificates = new List <CertificateViewModel>();

            foreach (var cert in certificateCollection)
            {
                certificates.Add(new CertificateViewModel
                {
                    Version              = cert.Version,
                    SerialNumber         = cert.SerialNumber,
                    SignatureAlgorithmId = cert.SignatureAlgorithm.FriendlyName,
                    SubjectName          = cert.SubjectName.Name,
                    Issuer             = cert.Issuer,
                    IssuerName         = cert.IssuerName.Name,
                    NotBefore          = cert.NotBefore,
                    NotAfter           = cert.NotAfter,
                    PublicKeyAlgorithm = cert.PublicKey.Key.SignatureAlgorithm,
                    SubjectPublicKey   = CertificateTools.ExportPublicKeyToPEMFormat(cert.PublicKey.Key as RSA)
                });
            }

            var result = new IdentityProviderViewModel
            {
                Name         = x.Name,
                Description  = x.Description,
                Certificates = certificates
            };

            var jsonText = JsonConvert.SerializeObject(result);

            var response = new HttpResponseMessage(HttpStatusCode.OK);

            response.Content = new StringContent(jsonText, Encoding.UTF8, "application/json");

            return(response);
        }
        public ActionResult Create(IdentityProviderViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(View("Create", model));
            }

            try
            {
                var idp = Mapper.Map <IdentityProvider>(model);
                _idpSvc.Add(idp);
                TempData["SuccessMessage"] = "New identity provider has been successfully added";
                return(RedirectToAction("Index"));
            }
            catch (Exception ex)
            {
                ModelState.AddModelError("", ex.Message);
            }
            return(View("Create", model));
        }
        public ActionResult Index(IdentityProviderViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(View("Edit", model));
            }

            try
            {
                var idp = Mapper.Map <IdentityProvider>(model);
                _idpSvc.Update(idp);
                TempData["SuccessMessage"] = "Changes have been successfully saved";
                return(RedirectToAction("Index"));
            }
            catch (Exception ex)
            {
                ModelState.AddModelError("", ex.Message);
            }
            return(View("Edit", model));
        }
Beispiel #5
0
        public async Task <IActionResult> Index(CancellationToken cancellationToken)
        {
            var authenticatedUser = await SetUser().ConfigureAwait(false);

            var subject = authenticatedUser.GetSubject();
            var ro      = subject == null ? null : await GetUserProfile(subject, cancellationToken).ConfigureAwait(false);

            if (ro == null)
            {
                return(BadRequest(
                           new ErrorDetails
                {
                    Status = HttpStatusCode.BadRequest,
                    Title = ErrorCodes.InternalError,
                    Detail = Strings.TheRoDoesntExist
                }));
            }

            var authenticationSchemes =
                (await _authenticationSchemeProvider.GetAllSchemesAsync().ConfigureAwait(false)).Where(
                    a => !string.IsNullOrWhiteSpace(a.DisplayName));
            var viewModel = new ProfileViewModel(ro.Claims);

            foreach (var profile in ro.ExternalLogins)
            {
                var record = new IdentityProviderViewModel(profile.Issuer, profile.Subject);
                viewModel.LinkedIdentityProviders.Add(record);
            }

            var actualScheme = authenticatedUser?.Identity?.AuthenticationType;

            viewModel.UnlinkedIdentityProviders = authenticationSchemes
                                                  .Where(
                a => a.DisplayName != null &&
                !a.DisplayName.StartsWith('_') &&
                !ro.ExternalLogins.Any(p => p.Issuer == a.Name && a.Name != actualScheme))
                                                  .Select(p => new IdentityProviderViewModel(p.Name))
                                                  .ToList();
            return(Ok(viewModel));
        }
        public async Task <IActionResult> Profile()
        {
            var authenticatedUser = await SetUser();

            var actualScheme = authenticatedUser.Identity.AuthenticationType;
            var profiles     = await _profileActions.GetProfiles(authenticatedUser.GetSubject());

            var authenticationSchemes = (await _authenticationSchemeProvider.GetAllSchemesAsync()).Where(a => !string.IsNullOrWhiteSpace(a.DisplayName));
            var viewModel             = new ProfileViewModel();

            if (profiles != null && profiles.Any())
            {
                foreach (var profile in profiles)
                {
                    var record = new IdentityProviderViewModel(profile.Issuer, profile.Subject);
                    viewModel.LinkedIdentityProviders.Add(record);
                }
            }

            viewModel.UnlinkedIdentityProviders = authenticationSchemes.Where(a => profiles != null && !profiles.Any(p => p.Issuer == a.Name && a.Name != actualScheme))
                                                  .Select(p => new IdentityProviderViewModel(p.Name)).ToList();
            return(View("Profile", viewModel));
        }