A buggy RP can cause DNOA OP to throw a KeyNotFoundException instead of a ProtocolException. A log of the problem is here:
{
"Url": "/openid/provider",
"Parameters": {
"openid.assoc_handle": "{634477555066085461}{TTYcIg==}{32}",
"openid.claimed_id": "https://openid.stackexchange.com/user/f5e91123-e5b4-43c5-871f-5f276c75d31a",
"openid.identity": "https://openid.stackexchange.com/user/f5e91123-e5b4-43c5-871f-5f276c75d31a",
"openid.mode": "check_authentication",
"openid.op_endpoint": "https://openid.stackexchange.com/openid/provider",
"openid.response_nonce": "2011-08-01T00:32:10Zvdyt3efw",
"openid.return_to": "http://openid-consumer.appspot.com/finish?session_id=1543025&janrain_nonce=2011-08-01T00%3A32%3A09ZIPGz7D",
"openid.sig": "b0Rll6Kt1KKBWWBEg/qBvW3sQYtmhOUmpI0/UREBVZ0=",
"openid.signed": "claimed_id,identity,assoc_handle,op_endpoint,return_to,response_nonce,ns.sreg,sreg.email,sreg.fullname",
"openid.sreg.email": "[email protected]",
"openid.sreg.fullname": "Kevin K Montrose",
"ALL_HTTP": "HTTP_CONTENT_LENGTH:869\r\nHTTP_CONTENT_TYPE:application/x-www-form-urlencoded\r\nHTTP_ACCEPT_ENCODING:gzip\r\nHTTP_HOST:openid.stackexchange.com\r\nHTTP_USER_AGENT:AppEngine-Google; (+http://code.google.com/appengine; appid: openid-consumer)\r\nHTTP_X_REAL_IP:209.85.224.82\r\nHTTP_X_FORWARDED_FOR:209.85.224.82\r\nHTTP_X_FORWARDED_PROTO:https\r\n",
"ALL_RAW": "Content-Length: 869\r\nContent-Type: application/x-www-form-urlencoded\r\nAccept-Encoding: gzip\r\nHost: openid.stackexchange.com\r\nUser-Agent: AppEngine-Google; (+http://code.google.com/appengine; appid: openid-consumer)\r\nX-Real-IP: 209.85.224.82\r\nX-Forwarded-For: 209.85.224.82\r\nX-Forwarded-Proto: https\r\n",
"APPL_MD_PATH": "/LM/W3SVC/14/ROOT",
"APPL_PHYSICAL_PATH": "C:\sites\openid.stackexchange.com\prod",
"AUTH_TYPE": "",
"AUTH_USER": "",
"AUTH_PASSWORD": "",
"LOGON_USER": "",
"REMOTE_USER": "",
"CERT_COOKIE": "",
"CERT_FLAGS": "",
"CERT_ISSUER": "",
"CERT_KEYSIZE": "",
"CERT_SECRETKEYSIZE": "",
"CERT_SERIALNUMBER": "",
"CERT_SERVER_ISSUER": "",
"CERT_SERVER_SUBJECT": "",
"CERT_SUBJECT": "",
"CONTENT_LENGTH": "869",
"CONTENT_TYPE": "application/x-www-form-urlencoded",
"GATEWAY_INTERFACE": "CGI/1.1",
"HTTPS": "off",
"HTTPS_KEYSIZE": "",
"HTTPS_SECRETKEYSIZE": "",
"HTTPS_SERVER_ISSUER": "",
"HTTPS_SERVER_SUBJECT": "",
"INSTANCE_ID": "14",
"INSTANCE_META_PATH": "/LM/W3SVC/14",
"LOCAL_ADDR": "64.34.119.23",
"PATH_INFO": "/openid/provider",
"PATH_TRANSLATED": "C:\sites\openid.stackexchange.com\prod\openid\provider",
"QUERY_STRING": "",
"REMOTE_ADDR": "64.34.119.10",
"REMOTE_HOST": "64.34.119.10",
"REMOTE_PORT": "51829",
"REQUEST_METHOD": "POST",
"SCRIPT_NAME": "/openid/provider",
"SERVER_NAME": "openid.stackexchange.com",
"SERVER_PORT": "80",
"SERVER_PORT_SECURE": "0",
"SERVER_PROTOCOL": "HTTP/1.0",
"SERVER_SOFTWARE": "Microsoft-IIS/7.5",
"URL": "/openid/provider",
"HTTP_CONTENT_LENGTH": "869",
"HTTP_CONTENT_TYPE": "application/x-www-form-urlencoded",
"HTTP_ACCEPT_ENCODING": "gzip",
"HTTP_HOST": "openid.stackexchange.com",
"HTTP_USER_AGENT": "AppEngine-Google; (+http://code.google.com/appengine; appid: openid-consumer)",
"HTTP_X_REAL_IP": "209.85.224.82",
"HTTP_X_FORWARDED_FOR": "209.85.224.82",
"HTTP_X_FORWARDED_PROTO": "https"
},
"ReceivedCookies": {},
"SendingCookies": {},
"ReceivedHeaders": {
"Content-Length": "869",
"Content-Type": "application/x-www-form-urlencoded",
"Accept-Encoding": "gzip",
"Host": "openid.stackexchange.com",
"User-Agent": "AppEngine-Google; (+http://code.google.com/appengine; appid: openid-consumer)",
"X-Real-IP": "209.85.224.82",
"X-Forwarded-For": "209.85.224.82",
"X-Forwarded-Proto": "https"
},
"SendingHeaders": {
"Server": "Microsoft-IIS/7.5",
"Content-Encoding": "gzip",
"Cache-Control": "private",
"X-AspNet-Version": "4.0.30319"
},
"Form": {
"openid.assoc_handle": "{634477555066085461}{TTYcIg==}{32}",
"openid.claimed_id": "https://openid.stackexchange.com/user/f5e91123-e5b4-43c5-871f-5f276c75d31a",
"openid.identity": "https://openid.stackexchange.com/user/f5e91123-e5b4-43c5-871f-5f276c75d31a",
"openid.mode": "check_authentication",
"openid.op_endpoint": "https://openid.stackexchange.com/openid/provider",
"openid.response_nonce": "2011-08-01T00:32:10Zvdyt3efw",
"openid.return_to": "http://openid-consumer.appspot.com/finish?session_id=1543025&janrain_nonce=2011-08-01T00%3A32%3A09ZIPGz7D",
"openid.sig": "b0Rll6Kt1KKBWWBEg/qBvW3sQYtmhOUmpI0/UREBVZ0=",
"openid.signed": "claimed_id,identity,assoc_handle,op_endpoint,return_to,response_nonce,ns.sreg,sreg.email,sreg.fullname",
"openid.sreg.email": "[email protected]",
"openid.sreg.fullname": "Kevin K Montrose"
},
"Message": "The given key was not present in the dictionary.",
"StackTrace": " at System.Collections.Generic.Dictionary2.get_Item(TKey key)\r\n at DotNetOpenAuth.OpenId.ChannelElements.SigningBindingElement.<>c__DisplayClassd.<GetSignature>b__b(<>f__AnonymousType2
2 <>h__TransparentIdentifier9)\r\n at System.Linq.Enumerable.WhereSelectArrayIterator2.MoveNext()\r\n at DotNetOpenAuth.OpenId.ChannelElements.KeyValueFormEncoding.GetBytes(IEnumerable
1 keysAndValues)\r\n at DotNetOpenAuth.OpenId.ChannelElements.SigningBindingElement.GetSignature(ITamperResistantOpenIdMessage signedMessage, Association association)\r\n at DotNetOpenAuth.OpenId.ChannelElements.SigningBindingElement.ProcessIncomingMessage(IProtocolMessage message)\r\n at DotNetOpenAuth.Messaging.Channel.ProcessIncomingMessage(IProtocolMessage message)\r\n at DotNetOpenAuth.OpenId.ChannelElements.OpenIdChannel.ProcessIncomingMessage(IProtocolMessage message)\r\n at DotNetOpenAuth.Messaging.Channel.ReadFromRequest(HttpRequestInfo httpRequest)\r\n at DotNetOpenAuth.OpenId.Provider.OpenIdProvider.GetRequest(HttpRequestInfo httpRequestInfo)\r\n at OpenIdProvider.Controllers.OpenIdController.Provider() in c:\Builds\OpenIdProvider\prod\OpenIdProvider\Controllers\OpenIdController.cs:line 160\r\n at lambda_method(Closure , ControllerBase , Object[] )\r\n at System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary2 parameters)\r\n at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary
2 parameters)\r\n at System.Web.Mvc.ControllerActionInvoker.<>c__DisplayClass15.b__12()\r\n at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter filter, ActionExecutingContext preContext, Func1 continuation)\r\n at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodWithFilters(ControllerContext controllerContext, IList
1 filters, ActionDescriptor actionDescriptor, IDictionary`2 parameters)\r\n at System.Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContext controllerContext, String actionName)\r\n at System.Web.Mvc.Controller.ExecuteCore()\r\n at System.Web.Mvc.ControllerBase.Execute(RequestContext requestContext)\r\n at System.Web.Mvc.MvcHandler.<>c__DisplayClass6.<>c__DisplayClassb.b__5()\r\n at System.Web.Mvc.Async.AsyncResultWrapper.<>c__DisplayClass1.b__0()\r\n at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()\r\n at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)",
"Id": "93938b5f-d973-44c8-aae5-98ad29ebea6a",
"CreationDate": "/Date(1312158730508)/",
"RemoteIP": "209.85.224.82",
"Type": "System.Collections.Generic.KeyNotFoundException",
"UserId": null
}