Первое, что вам нужно сделать, это включить клиентские сертификаты в IIS Express.
Вы делаете это, редактируя этот файл:
.vs \ Config \ ApplicationHost.config
Изменение
<access sslFlags="None" />
до
<access sslFlags="Ssl, SslNegotiateCert" />
Теперь IIS Express поддерживает клиентские сертификаты, но также проверяет, является ли сертификат доверенным.
Образец сертификата Client.pfx не будет работать из коробки.
Вы можете либо позволить Windows доверять издателю этого сертификата (не рекомендуется), либо вы можете загрузить существующий сертификат из хранилища сертификатов с помощью следующего кода:
X509Store store = new X509Store(StoreLocation.CurrentUser);
store.Open(OpenFlags.ReadOnly);
string thumb = "<thumbprint>";
X509Certificate2Collection cers = store.Certificates.Find(X509FindType.FindByThumbprint, thumb, false);
X509Certificate2 cert = null;
if (cers.Count > 0)
{
cert = cers[0];
}
store.Close();
Вам также необходимо поместить отпечаток этого сертификата в свойство ClientSecret в списке клиентов на Identity Server.
Это пример кода, который вам нужно изменить:
новый клиент
{
ClientName = "Клиент потока учетных данных клиента",
Включено = true,
ClientId = "clientcredentials.client",
Flow = Flows.ClientCredentials,
ClientSecrets = new List<Secret>
{
new Secret("secret".Sha256()),
new Secret
{
Value = "<your thumbprint here>",
Type = Constants.SecretTypes.X509CertificateThumbprint,
Description = "Client Certificate"
},
},
AllowedScopes = new List<string>
{
"read",
"write"
},
Claims = new List<Claim>
{
new Claim("location", "datacenter")
}
},