예제 #1
0
        public ActionResult Index(InitialConfigurationModel model)
        {
            if (authorizationServerAdministration.GlobalConfiguration != null)
            {
                return(Redirect("~/"));
            }

            if (ModelState.IsValid)
            {
                var global = new GlobalConfiguration()
                {
                    AuthorizationServerName = model.Name,
                    Issuer         = model.Issuer,
                    Administrators = new List <AuthorizationServerAdministrator>
                    {
                        new AuthorizationServerAdministrator {
                            NameID = model.Admin
                        }
                    }
                };
                authorizationServerAdministration.GlobalConfiguration = global;
                authorizationServerAdministration.SaveChanges();

                if (model.Test == "test")
                {
                    TestData.Populate();
                }

                return(View("Success"));
            }

            return(View("Index"));
        }
        public ActionResult Index()
        {
            if (!string.IsNullOrWhiteSpace(ConfigurationRepository.SigningCertificate.SubjectDistinguishedName))
            {
                return(RedirectToAction("index", "home"));
            }

            var model = new InitialConfigurationModel
            {
                AvailableCertificates = GetAvailableCertificatesFromStore(),
                IssuerUri             = ConfigurationRepository.Configuration.IssuerUri,
                SiteName = ConfigurationRepository.Configuration.SiteName
            };

            return(View(model));
        }
예제 #3
0
        public ActionResult Index()
        {
            if (ConfigurationRepository.Keys.SigningCertificate != null)
            {
                return(RedirectToAction("index", "home"));
            }

            var model = new InitialConfigurationModel
            {
                AvailableCertificates = GetAvailableCertificatesFromStore(),
                IssuerUri             = ConfigurationRepository.Global.IssuerUri,
                SiteName = ConfigurationRepository.Global.SiteName
            };

            return(View(model));
        }
예제 #4
0
        public ActionResult Index(InitialConfigurationModel model)
        {
            if (ModelState.IsValid)
            {
                var config = ConfigurationRepository.Configuration;
                config.SiteName  = model.SiteName;
                config.IssuerUri = model.IssuerUri;

                ConfigurationRepository.UpdateConfiguration(config);
                ConfigurationRepository.UpdateCertificates(null, model.SigningCertificate);

                return(RedirectToAction("index", "home"));
            }

            ModelState.AddModelError("", "Errors ocurred...");
            model.AvailableCertificates = GetAvailableCertificatesFromStore();
            return(View(model));
        }
예제 #5
0
        public ActionResult Index(InitialConfigurationModel model)
        {
            if (ConfigurationRepository.Keys.SigningCertificate != null)
            {
                return(RedirectToAction("index", "home"));
            }

            if (ModelState.IsValid)
            {
                var config = ConfigurationRepository.Global;
                config.SiteName  = model.SiteName;
                config.IssuerUri = model.IssuerUri;

                // create default IdentityServer groups and admin user.
                if (model.CreateDefaultAccounts)
                {
                    var errors = CreateDefaultAccounts(model.UserName, model.Password);

                    if (errors.Count != 0)
                    {
                        errors.ForEach(e => ModelState.AddModelError("", e));
                        model.AvailableCertificates = GetAvailableCertificatesFromStore();
                        return(View(model));
                    }
                }

                // update global config
                ConfigurationRepository.Global = config;

                var keys = ConfigurationRepository.Keys;
                try
                {
                    var cert = X509.LocalMachine.My.SubjectDistinguishedName.Find(model.SigningCertificate, false).First();

                    // make sure we can access the private key
                    var pk = cert.PrivateKey;

                    keys.SigningCertificate = cert;
                }
                catch (CryptographicException)
                {
                    ModelState.AddModelError("", string.Format(Resources.InitialConfigurationController.NoReadAccessPrivateKey, WindowsIdentity.GetCurrent().Name));
                    model.AvailableCertificates = GetAvailableCertificatesFromStore();
                    return(View(model));
                }

                if (string.IsNullOrWhiteSpace(keys.SymmetricSigningKey))
                {
                    keys.SymmetricSigningKey = Convert.ToBase64String(CryptoRandom.CreateRandomKey(32));
                }

                // updates key material config
                ConfigurationRepository.Keys = keys;



                return(RedirectToAction("index", "home"));
            }

            ModelState.AddModelError("", Resources.InitialConfigurationController.ErrorsOcurred);
            model.AvailableCertificates = GetAvailableCertificatesFromStore();
            return(View(model));
        }