尝试使用MyOpenID和Yahoo进行身份验证时,我会收到一条“消息签名不正确”异常.
我几乎使用了DotNetOpenAuth 3.4.2附带的ASP.NET MVC示例代码
- public ActionResult Authenticate(string openid)
- {
- var openIdRelyingParty = new OpenIdRelyingParty();
- var authenticationResponse = openIdRelyingParty.GetResponse();
- if (authenticationResponse == null)
- {
- // Stage 2: User submitting identifier
- Identifier identifier;
- if (Identifier.TryParse(openid,out identifier))
- {
- var realm = new Realm(Request.Url.Root() + "openid");
- var authenticationRequest = openIdRelyingParty.CreateRequest(openid,realm);
- authenticationRequest.RedirectToProvider();
- }
- else
- {
- return RedirectToAction("login","home");
- }
- }
- else
- {
- // Stage 3: OpenID provider sending assertion response
- switch (authenticationResponse.Status)
- {
- case AuthenticationStatus.Authenticated:
- {
- // TODO
- }
- case AuthenticationStatus.Failed:
- {
- throw authenticationResponse.Exception;
- }
- }
- }
- return new EmptyResult();
- }
与Google,AOL等人合作.但是,雅虎和MyOpenID属于AuthenticationStatus.Failed案例,但出现以下异常:
- DotNetOpenAuth.Messaging.Bindings.InvalidSignatureException: Message signature was incorrect.
- at DotNetOpenAuth.OpenId.ChannelElements.SigningBindingElement.ProcessIncomingMessage(IProtocolMessage message) in c:\Users\andarno\git\dotnetopenid\src\DotNetOpenAuth\OpenId\ChannelElements\SigningBindingElement.cs:line 139
- at DotNetOpenAuth.Messaging.Channel.ProcessIncomingMessage(IProtocolMessage message) in c:\Users\andarno\git\dotnetopenid\src\DotNetOpenAuth\Messaging\Channel.cs:line 992
- at DotNetOpenAuth.OpenId.ChannelElements.OpenIdChannel.ProcessIncomingMessage(IProtocolMessage message) in c:\Users\andarno\git\dotnetopenid\src\DotNetOpenAuth\OpenId\ChannelElements\OpenIdChannel.cs:line 172
- at DotNetOpenAuth.Messaging.Channel.ReadFromRequest(HttpRequestInfo httpRequest) in c:\Users\andarno\git\dotnetopenid\src\DotNetOpenAuth\Messaging\Channel.cs:line 386
- at DotNetOpenAuth.OpenId.RelyingParty.OpenIdRelyingParty.GetResponse(HttpRequestInfo httpRequestInfo) in c:\Users\andarno\git\dotnetopenid\src\DotNetOpenAuth\OpenId\RelyingParty\OpenIdRelyingParty.cs:line 540
显示其他人有同样的问题:http://trac.dotnetopenauth.net:8000/ticket/172
有没有人有解决方法?