2010-03-24 28 views
5

Giới thiệuchữ ký nhắn không hợp lệ khi chạy Provider OpenID trên cụm

Chúng tôi có một nhà cung cấp OpenID mà chúng tôi tạo ra bằng cách sử dụng thành phần DotNetOpenAuth. Mọi thứ hoạt động tốt khi chúng ta chạy nhà cung cấp trên một nút, nhưng khi chúng ta di chuyển nhà cung cấp đến một cụm cân bằng tải, nơi nhiều máy chủ đang xử lý các yêu cầu cho mỗi phiên, chúng tôi gặp vấn đề với việc ký thư như thành phần DotNetOpenAuth từ mỗi nút cụm để tạo chữ ký.

Exception

DotNetOpenAuth.Messaging.Bindings.InvalidSignatureException: Message signature was incorrect. 
    at DotNetOpenAuth.OpenId.ChannelElements.SigningBindingElement.ProcessIncomingMessage(IProtocolMessage message) in c:\BuildAgent\work\7ab20c0d948e028f\src\DotNetOpenAuth\OpenId\ChannelElements\SigningBindingElement.cs:line 139 
    at DotNetOpenAuth.Messaging.Channel.ProcessIncomingMessage(IProtocolMessage message) in c:\BuildAgent\work\7ab20c0d948e028f\src\DotNetOpenAuth\Messaging\Channel.cs:line 940 
    at DotNetOpenAuth.OpenId.ChannelElements.OpenIdChannel.ProcessIncomingMessage(IProtocolMessage message) in c:\BuildAgent\work\7ab20c0d948e028f\src\DotNetOpenAuth\OpenId\ChannelElements\OpenIdChannel.cs:line 172 
    at DotNetOpenAuth.Messaging.Channel.ReadFromRequest(HttpRequestInfo httpRequest) in c:\BuildAgent\work\7ab20c0d948e028f\src\DotNetOpenAuth\Messaging\Channel.cs:line 378 
    at DotNetOpenAuth.OpenId.RelyingParty.OpenIdRelyingParty.GetResponse(HttpRequestInfo httpRequestInfo) in c:\BuildAgent\work\7ab20c0d948e028f\src\DotNetOpenAuth\OpenId\RelyingParty\OpenIdRelyingParty.cs:line 493 

Cài đặt

Chúng tôi có các thiết lập máy cấu hình để sử dụng phím cùng một máy trên tất cả các nút cluster và chúng tôi đã thiết lập một ra khỏi phiên trình với SQL Server.

Câu hỏi

Làm thế nào để chúng ta cấu hình chìa khóa được sử dụng bởi DotNetOpenAuth ký thông điệp của mình để các khách hàng sẽ tin tưởng phản hồi từ tất cả các máy chủ trong cluster trong cùng một phiên?

+0

Tôi nghĩ rằng chúng tôi có cùng một vấn đề: http://stackoverflow.com/questions/2505565/dotnetopenauth-message-signature-was-incorrect –

+0

Chúng tôi đã gặp sự cố tương tự, nhưng thay vào đó đã chọn tạo cửa hàng nonce khá đẹp đơn giản và hoạt động khá tốt trên các thiết lập trang trại/vườn của chúng tôi. Nhưng vấn đề chúng tôi đang gặp bây giờ là với nhà cung cấp của chúng tôi, mà chúng tôi đang cố gắng chuyển đến một trang trại, chứ không phải RP. – Garth

Trả lời

3

Bạn phải thực hiện IProviderApplicationStore và vượt qua một thể hiện của đối tượng này đến OpenIdProvider dụ bạn tạo ra, hoặc thiết lập các loại cửa hàng trong file web.config của bạn. Việc triển khai giao diện này của bạn phải cung cấp quyền truy cập vào cơ sở dữ liệu mà tất cả các máy chủ trong chia sẻ trang trại trên web của bạn.

+0

Tất nhiên có vẻ như bây giờ bạn đã nói điều đó, đặc biệt là vì chúng tôi đã làm điều tương tự cho RP. Cảm ơn. – Garth

+1

Giao diện này đã được đổi tên thành 'IOpenIdApplicationStore' ngày nay. –

1

Khi bạn tạo OpenIdRelyingParty, hãy đảm bảo bạn vượt qua null trong hàm tạo.

Điều này đặt trang web của bạn vào chế độ không trạng thái OpenID hoặc chế độ 'câm'. Nó hơi chậm cho người dùng đăng nhập (nếu bạn thậm chí còn nhận thấy) nhưng bạn tránh phải viết một IRelyingPartyApplicationStore để cho phép DotNetOpenAuth hoạt động trên trang trại của bạn;

var openIdRelyingParty = new OpenIdRelyingParty(null); 
+1

Đây không phải là bên chuyển tiếp, mà là nhà cung cấp. – Garth

Các vấn đề liên quan