【发布时间】:2010-11-22 20:43:53
【问题描述】:
最近,我们的 Web 托管服务提供商将所有共享 ASP.NET 站点托管的信任级别提升到了中等信任级别。因此,我们在通过 PayPal 的 SOAP API 完成交易时遇到了一些问题。具体来说,使用以下堆栈跟踪引发了 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
...
我在 PayPal SOAP SDK 中找到了违规方法的来源。
/// <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 在中等信任环境中运行?是否有必要接受所有不受信任的证书?
谢谢。
【问题讨论】: