Beispiel #1
0
        internal X509Certificate2 GetClientCertificate()
        {
            CertificateReferenceElement certificate = this.Certificate;

            if (certificate == null || !certificate.ElementInformation.IsPresent)
            {
                return(null);
            }
            if (this.clientCertificate != null)
            {
                return(this.clientCertificate);
            }
            X509Store x509Store = new X509Store(certificate.StoreName, certificate.StoreLocation);

            try
            {
                x509Store.Open(OpenFlags.OpenExistingOnly);
                X509Certificate2Collection x509Certificate2Collection = x509Store.Certificates.Find(certificate.X509FindType, certificate.FindValue, false);
                if (x509Certificate2Collection.Count == 0)
                {
                    throw new System.InvalidOperationException("Unable to find client certificate.");
                }
                this.clientCertificate = x509Certificate2Collection[0];
            }
            finally
            {
                x509Store.Close();
            }
            return(this.clientCertificate);
        }
Beispiel #2
0
        public static X509EncryptingCredentials GetEncryptingCredentials(this CertificateReferenceElement reference)
        {
            var cert = reference?.GetCertificate();

            if (cert == null)
            {
                return(null);
            }
            return(new X509EncryptingCredentials(cert));
        }
Beispiel #3
0
        public static X509Certificate2 GetCertificate(this CertificateReferenceElement reference)
        {
            if (reference != null && reference.ElementInformation.IsPresent)
            {
                return(GetCertificate(
                           reference.StoreName,
                           reference.StoreLocation,
                           reference.X509FindType,
                           reference.FindValue));
            }

            return(null);
        }
Beispiel #4
0
        public static X509SigningCredentials GetSigningCredentials(this CertificateReferenceElement reference)
        {
            if (reference == null)
            {
                return(null);
            }

            var cert = reference.GetCertificate();

            if (cert == null)
            {
                return(null);
            }
            return(new X509SigningCredentials(cert));
        }
Beispiel #5
0
        protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();

            WebApiConfig.Register(GlobalConfiguration.Configuration);
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);

            // Only switch to RSA encryption for SSO if a certificateReference exists in the federationConfiguration web.config section. Otherwise, default to DPAPI. <certificateReference x509FindType="FindByThumbprint" findValue="DF4CE1055D36337F017E1A1F9376B560FC40DA77"/>
            foreach (FederationConfigurationElement config in SystemIdentityModelServicesSection.Current.FederationConfigurationElements)
            {
                CertificateReferenceElement certificate = config.ServiceCertificate.CertificateReference;
                if (!string.IsNullOrEmpty(certificate.FindValue))
                {
                    // Initialize single-sign-on certificate reference.
                    FederatedAuthentication.FederationConfigurationCreated += OnServiceConfigurationCreated;
                }
            }
        }
Beispiel #6
0
 public static X509Certificate2 CreateInstance(this CertificateReferenceElement el)
 {
     return(CreateCertificateFrom(el.StoreLocation, el.StoreName, el.X509FindType, el.FindValue));
 }