2012-12-04 30 views
2

我正在通過DotNetOpenAuth示例,並實現一個openID提供程序和依賴方。拒絕關聯,因爲編碼句柄的反序列化失敗。 DotNetOpenAuth

本質上,它與提供的DotNetOpenAuth示例非常相似,但我使用的是MVC 4,因此剃鬚刀,因此不使用樣本中使用的控件IdentityEndpoint控件。 (我正在將提供者頭部寫入部分視圖中)。還託管在IIS 7.5中。

我得到的地步,用戶簽約,而OP被重定向回依賴方,這是越來越以下錯誤,從日誌中:

DotNetOpenAuth.Messaging.ProtocolException :缺少剷鬥解密密鑰 「的https://本地主機/ dnoa/association_handles」 把手 「3tg1」
在DotNetOpenAuth.Messaging.ErrorUtilities.VerifyProtocol(布爾條件,字符串unformattedMessage,對象[]參數)在DotNetOpenAuth.Messaging
。 DataBagFormatterBase`1.CalculateSignature(Byte [] bytesToSign,String symmetricSecretHandle)
一個....

我不知道是否有幫助,但錯誤之前的兩個頭分別是:

Signing these message parts:  
claimed_id: http://www.sampleOpenIDProvider.com/user/justpartofthecrowd 
identity: http://www.sampleOpenIDProvider.com/user/justpartofthecrowd 
assoc_handle: he9m!IAAAAD43Voo3-zQng-ZVSKb9ryFVSIKDLJj4Ph_I9W64ypFCQQAAAAFlZWUQzOJQfO70Pvud2a--auCE7HKkFjBM45HXlpJixLEmtdgd8YPBMckvUFnIPqHBbaAk7mkhI8lDVPoKekUW 
op_endpoint: http://www.sampleOpenIDProvider.com/OpenId/Provider 
return_to: http://www.samplemobilephonecompany.com/User/Authenticate?ReturnUrl=Index&dnoa.userSuppliedIdentifier=http%3A%2F%2Fwww.sampleOpenIDProvider.com 
response_nonce: 2012-12-03T23:59:05ZCqMBPIFL  
Base64 representation of signed data: Y2xhaW1lZF9pZDpodHRwOi8vd3d3LnNvbGZ5cmUtaWQuY29tL3VzZXIvcmFscGhza2kKaWRlbnRpdHk6aHR0cDovL3d3dy5zb2xmeXJlLWlkLmNvbS91c2VyL3JhbHBoc2tpCmFzc29jX2hhbmRsZTpoZTltIUlBQUFBRDQzVm9vMy16UW5nLVpWU0tiOXJ5RlZTSUtETEpqNFBoX0k5VzY0eXBGQ1FRQUFBQUZsWldVUXpPSlFmTzcwUHZ1ZDJhLS1hdUNFN0hLa0ZqQk00NUhYbHBKaXhMRW10ZGdkOFlQQk1ja3ZVRm5JUHFIQmJhQWs3bWtoSThsRFZQb0tla1VXCm9wX2VuZHBvaW50Omh0dHA6Ly93d3cuc29sZnlyZS1pZC5jb20vT3BlbklkL1Byb3ZpZGVyCnJldHVybl90bzpodHRwOi8vd3d3LnNhbXBsZW1vYmlsZXBob25lY29tcGFueS5jb20vVXNlci9BdXRoZW50aWNhdGU/UmV0dXJuVXJsPUluZGV4JmRub2EudXNlclN1cHBsaWVkSWRlbnRpZmllcj1odHRwJTNBJTJGJTJGd3d3LnNvbGZ5cmUtaWQuY29tCnJlc3BvbnNlX25vbmNlOjIwMTItMTItMDNUMjM6NTk6MDVaQ3FNQlBJRkwK 
Signature: kw4f92CpwFbXgUkLs+Pf+5cFrtEzmE9KpxHgTYwi1tQ= 

After binding element processing, the received IndirectSignedResponse (2.0) message is:  
openid.sig: kw4f92CpwFbXgUkLs+Pf+5cFrtEzmE9KpxHgTYwi1tQ= 
openid.signed: claimed_id,identity,assoc_handle,op_endpoint,return_to,response_nonce 
openid.assoc_handle: he9m!IAAAAD43Voo3-zQng-ZVSKb9ryFVSIKDLJj4Ph_I9W64ypFCQQAAAAFlZWUQzOJQfO70Pvud2a--auCE7HKkFjBM45HXlpJixLEmtdgd8YPBMckvUFnIPqHBbaAk7mkhI8lDVPoKekUW 
openid.invalidate_handle: 3tg1!IAAAALLyXKaShsmSDmEaKWxiBCi7-a8Nso0tyNaPKVqi52KuQQAAAAHvnjGT2Gt-_iWlSTpmBgthNS8s2Dxs6-pQG6rzYrFqgA5mp_T_HPcaJ6BchUsN9Lx2uH7jssuSAq0xbae7lb1r 
openid.op_endpoint: http://www.sampleOpenIDProvider.com/OpenId/Provider 
openid.return_to: http://www.samplemobilephonecompany.com/User/Authenticate?ReturnUrl=Index&dnoa.userSuppliedIdentifier=http%3A%2F%2Fwww.sampleOpenIDProvider.com 
openid.response_nonce: 2012-12-03T23:59:05ZCqMBPIFL 
openid.mode: id_res 
openid.ns: http://specs.openid.net/auth/2.0 
openid.claimed_id: http://www.sampleOpenIDProvider.com/user/justpartofthecrowd 
openid.identity: http://www.sampleOpenIDProvider.com/user/justpartofthecrowd 
ReturnUrl: Index dnoa.userSuppliedIdentifier: http://www.sampleOpenIDProvider.com 

我想這隻會意味着什麼那些已經實施了dotnetopenauth,但值得一試!

+0

什麼,如果有'IOpenIdApplicationStore'你提供給你的'OpenIdRelyingParty'類? –

+0

嗨,我沒有使用任何IOpenIdApplicationStore。根據DotNetOpenAuth示例使用無參數構造函數實例化該類。如果這有幫助,我不會這樣做,但依賴方代碼是dotnetopenauth示例,只是它在IIS中託管。這是我在MVC4中重新創建的opendID提供者示例。 –

回答

2

在通過谷歌羣組搜索時,意外地修復了它,並閱讀了另一個問題,其中有用的安德魯阿諾特建議檢查所有的openID端點未經授權即可訪問。

所以,我檢查了我的代碼,我在我的RegisterGlobalFilters下面的語句:

filters.Add(new System.Web.Mvc.AuthorizeAttribute()); 

我使用的是與所有控制器或動作,正在使用的OpenID的[使用AllowAnonymous]屬性。或者我想,因爲刪除了全局過濾器,然後明確地將屬性僅添加到需要授權的區域才解決了問題。

相關問題