【发布时间】:2012-04-06 14:50:59
【问题描述】:
我有一个 ASP.NET MVC4 应用程序,它使用 DotNetOpenAuth 4.0.1 通过 OpenId 提供程序 (Google) 对用户进行身份验证。在我的开发机器(本地主机)上一切正常。
但是,当我将 Web 应用程序部署到服务器(共享主机)时,我在尝试进行身份验证时收到以下错误(特别是当我尝试创建 OpenIdRelyingParty 时):
覆盖成员时违反了继承安全规则:“DotNetOpenAuth.Messaging.ProtocolException.GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)”。重写方法的安全可访问性必须与被重写方法的安全可访问性相匹配。
堆栈跟踪:
DotNetOpenAuth.Messaging.ErrorUtilities.VerifyProtocol(Boolean condition, String message, Object[] args) +0
DotNetOpenAuth.Messaging.Channel.ValidateAndPrepareBindingElements(IEnumerable`1 elements) +524
DotNetOpenAuth.Messaging.Channel..ctor(IMessageFactory messageTypeProvider, IChannelBindingElement[] bindingElements) +316
DotNetOpenAuth.OpenId.ChannelElements.OpenIdChannel..ctor(IMessageFactory messageTypeProvider, IChannelBindingElement[] bindingElements) +48
DotNetOpenAuth.OpenId.ChannelElements.OpenIdRelyingPartyChannel..ctor(ICryptoKeyStore cryptoKeyStore, INonceStore nonceStore, RelyingPartySecuritySettings securitySettings) +52
DotNetOpenAuth.OpenId.RelyingParty.OpenIdRelyingParty..ctor(ICryptoKeyStore cryptoKeyStore, INonceStore nonceStore) +570
DotNetOpenAuth.OpenId.RelyingParty.OpenIdRelyingParty..ctor() +65
MyProject.Controllers.OpenIdController.Authenticate(String returnUrl) in OpenIdController.cs:81
...
我听说 DotNetOpenAuth 在中等信任度下运行良好,所以我很惊讶地发现了一个错误。我该如何解决?需要修改 DotNetOpenAuth 源代码还是有更简单的方法?
这个问题似乎类似于this one,但我不知道源代码的哪些部分需要编辑。同样奇怪的是,之前没有人就 DotNetOpenAuth 提出过这个问题,所以也许我做错了什么?请帮忙!
【问题讨论】:
标签: asp.net security dotnetopenauth