Похоже, ваша проблема не в синтаксисе, а в логических логах c:
(context.Request.Certificate != null) &&
(
!context.Request.Certificate.Issuer.Contains("CN=itv.mit-xperts.com") ||
!context.Request.Certificate.Issuer.Contains("CN=DigiCert Test SHA2 Intermediate CA-1")
)
Это будет истинно каждый раз, когда эмитент не содержит CN=itv.mit-xperts.com
и в любое время он не содержит CN=itv.mit-xperts.com
Похоже, что на самом деле вам нужно условие И:
(context.Request.Certificate != null) &&
(
!context.Request.Certificate.Issuer.Contains("CN=itv.mit-xperts.com") &&
!context.Request.Certificate.Issuer.Contains("CN=DigiCert Test SHA2 Intermediate CA-1")
)
Это будет верно, только если эмитент не содержит CN=itv.mit-xperts.com
AND IT ТАКЖЕ не содержит CN=DigiCert Test SHA2 Intermediate CA-1
В качестве альтернативы, кажется, вы можете переместить НЕ за скобки и изменить И на ИЛИ, что может быть немного проще:
(context.Request.Certificate != null) &&
!(
context.Request.Certificate.Issuer.Contains("CN=itv.mit-xperts.com") ||
context.Request.Certificate.Issuer.Contains("CN=DigiCert Test SHA2 Intermediate CA-1")
)
Это будет верно, если эмитент не содержит ни CN=itv.mit-xperts.com
, ни CN=DigiCert Test SHA2 Intermediate CA-1
Похоже, вы также можете использовать LINQ для этого:
var validIssuers = new []
{
"CN=itv.mit-xperts.com",
"CN=DigiCert Test SHA2 Intermediate CA-1",
};
var issuer = context.Request?.Certificate.Issuer;
return issuer != null && !validIssuers.Any(i => issuer.Contains(i));