Назад | Перейти на главную страницу

PayPal - среднее доверие ASP.NET

Недавно наш провайдер веб-хостинга перешел на средний уровень доверия для всех общих сайтов ASP.NET. В результате у нас возникают некоторые проблемы с выполнением транзакций через SOAP API PayPal. В частности, возникает исключение SecurityException со следующей трассировкой стека:

[SecurityException: Request for the permission of type 'System.Security.Permissions.SecurityPermission, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' failed.]
   System.Security.CodeAccessSecurityEngine.Check(Object demand, StackCrawlMark& stackMark, Boolean isPermSet) +0
   System.Security.CodeAccessPermission.Demand() +58
   System.Net.ServicePointManager.set_CertificatePolicy(ICertificatePolicy value) +54
   com.paypal.sdk.core.APICallerBase.SetTrustManager() +30
   com.paypal.sdk.core.soap.SOAPAPICaller..ctor() +14
   com.paypal.sdk.services.CallerServices..ctor() +23
...

Я нашел источник оскорбительного метода в SDK PayPal SOAP.

/// <summary>
/// To Accept all un-trusted certificate
/// </summary>
private void SetTrustManager()
{
    //This code is added to accept all un-trusted certificate i.e self-signed certificate
    if (Config.Instance.TrustAll)
    {
       //ServicePointManager.CertificatePolicy = TrustAllCertificatePolicy.Instance;
       ServicePointManager.CertificatePolicy = new MyPolicy();                          
    }
} // SetTrustManager

Кто-нибудь знает, какие изменения необходимо внести в наш проект и / или сервер, чтобы SDK мог работать в среде со средним уровнем доверия? Обязательно ли принимать все недоверенные сертификаты?

Боюсь, что это не поддерживается, вам нужно использовать интеграцию с классическим интерфейсом HTTPS. В противном случае, если вы хотите использовать SDK каким-либо образом, вам необходимо включить режим полного доверия на своем сервере.