private static X509Certificate2 FindCertificate(string name, StoreLocation location, NameType nameType) { X509Certificate2 certificate = null; if (location == StoreLocation.LocalMachine) { if (nameType == NameType.SubjectDistinguishedName) { certificate = X509.LocalMachine.My.SubjectDistinguishedName.Find(name, validOnly: false).FirstOrDefault(); } else if (nameType == NameType.Thumbprint) { certificate = X509.LocalMachine.My.Thumbprint.Find(name, validOnly: false).FirstOrDefault(); } } else { if (nameType == NameType.SubjectDistinguishedName) { certificate = X509.CurrentUser.My.SubjectDistinguishedName.Find(name, validOnly: false).FirstOrDefault(); } else if (nameType == NameType.Thumbprint) { certificate = X509.CurrentUser.My.Thumbprint.Find(name, validOnly: false).FirstOrDefault(); } } return(certificate); }
/// <summary> /// Sets the signing credential. /// </summary> /// <param name="builder">The builder.</param> /// <param name="name">The name.</param> /// <param name="location">The location.</param> /// <param name="nameType">Name parameter can be either a distinguished name or a thumbprint</param> /// <exception cref="InvalidOperationException">certificate: '{name}'</exception> public static IIdentityServerBuilder AddSigningCredential(this IIdentityServerBuilder builder, string name, StoreLocation location = StoreLocation.LocalMachine, NameType nameType = NameType.SubjectDistinguishedName) { var certificate = FindCertificate(name, location, nameType); if (certificate == null) { throw new InvalidOperationException($"certificate: '{name}' not found in certificate store"); } return(builder.AddSigningCredential(certificate)); }
/// <summary> /// Sets the signing credential. /// </summary> /// <param name="builder">The builder.</param> /// <param name="name">The name.</param> /// <param name="location">The location.</param> /// <param name="nameType">Name parameter can be either a distinguished name or a thumbprint</param> /// <exception cref="InvalidOperationException">certificate: '{name}'</exception> public static IIdentityServerBuilder AddSigningCredential(this IIdentityServerBuilder builder, string name, StoreLocation location = StoreLocation.LocalMachine, NameType nameType = NameType.SubjectDistinguishedName) { X509Certificate2 certificate = null; if (location == StoreLocation.LocalMachine) { if (nameType == NameType.SubjectDistinguishedName) { certificate = X509.LocalMachine.My.SubjectDistinguishedName.Find(name, validOnly: false).FirstOrDefault(); } else if (nameType == NameType.Thumbprint) { certificate = X509.LocalMachine.My.Thumbprint.Find(name, validOnly: false).FirstOrDefault(); } } else { if (nameType == NameType.SubjectDistinguishedName) { certificate = X509.CurrentUser.My.SubjectDistinguishedName.Find(name, validOnly: false).FirstOrDefault(); } else if (nameType == NameType.Thumbprint) { certificate = X509.CurrentUser.My.Thumbprint.Find(name, validOnly: false).FirstOrDefault(); } } if (certificate == null) { throw new InvalidOperationException($"certificate: '{name}' not found in certificate store"); } return(builder.AddSigningCredential(certificate)); }