Я пытаюсь защитить свою службу WCF, используя образец RelyingPartyLogic от DotNetOpenAuth. У меня работает аутентификация потребителей, но когда я отправляю авторизованный запрос к API, я получаю ошибку Это сообщение уже обработано . Это может указывать на то, что атака воспроизведения продолжается. "С трассировкой стека:
в
DotNetOpenAuth.Messaging.Bindings.StandardReplayProtectionBindingElement.ProcessIncomingMessage (IProtocolMessage
сообщение) в
DotNetOpenAuth.Messaging.Channel.ProcessIncomingMessage (IProtocolMessage
сообщение) в
DotNetOpenAuth.Messaging.Channel.ReadFromRequest (HttpRequestInfo
httpRequest) в
DotNetOpenAuth.Messaging.Channel.TryReadFromRequest [TRequest] (HttpRequestInfo
httpRequest, TRequest & request) по адресу
DotNetOpenAuth.OAuth.ServiceProvider.ReadProtectedResourceAuthorization (HttpRequestInfo
запрос) в
DotNetOpenAuth.OAuth.ServiceProvider.ReadProtectedResourceAuthorization (HttpRequestMessageProperty
запрос, Uri requestUri) в
RelyingPartyLogic.OAuthAuthorizationManager.CheckAccessCore (OperationContext
OperationContext) в
D: \ Code \ Nodeler \ Nodeler.RelyingPartyLogic \ OAuthAuthorizationManager.cs: линия
44 в
System.ServiceModel.ServiceAuthorizationManager.CheckAccess (OperationContext
OperationContext) в
System.ServiceModel.ServiceAuthorizationManager.CheckAccess (OperationContext
OperationContext, Message & message)
в
System.ServiceModel.Dispatcher.AuthorizationBehavior.Authorize (MessageRpc &
RPC)
След выглядит следующим образом:
2011-04-02 19: 16: 12,414 (GMT-5) [16]
DEBUG DotNetOpenAuth.Messaging.Channel
- Отправка сообщения: AuthorizedTokenResponse 2011-04-02
19: 16: 15 362 (GMT-5) [16] ИНФОРМАЦИЯ
DotNetOpenAuth.Messaging.Channel -
Сканирование входящего запроса на
Сообщения:
http://localhost:16468/Api/HelloWorld?oauth_token=7ix8k5NXN4NE1EXQWlHYE6klk7A%3D&oauth_consumer_key=f9fa91faa048434a86ab95681e9f732d&oauth_nonce=N7SPWJPl&oauth_signature_method=HMAC-SHA1&oauth_signature=HyNQvfk2OrP%2FnMFjLJdNih4c8N8%3D&oauth_version=1.0&oauth_timestamp=1301789775
2011-04-02 19: 16: 15 376 (GMT-5) [16]
DEBUG DotNetOpenAuth.Messaging.Channel
- Получен входящий запрос: AccessProtectedResourceRequest
2011-04-02 19: 16: 15 377 (GMT-5) [16]
ИНФОРМАЦИЯ DotNetOpenAuth.Messaging.Channel
- Обработка входящего AccessProtectedResourceRequest (1.0)
сообщение: oauth_token:
7ix8k5NXN4NE1EXQWlHYE6klk7A =
oauth_consumer_key:
f9fa91faa048434a86ab95681e9f732d
oauth_nonce: N7SPWJPl
oauth_signature_method: HMAC-SHA1
oauth_signature:
HyNQvfk2OrP / nMFjLJdNih4c8N8 =
oauth_version: 1.0 oauth_timestamp:
1301789775
2011-04-02 19: 16: 15 377 (GMT-5) [16]
DEBUG
DotNetOpenAuth.Messaging.Bindings -
Проверка входящего
AccessProtectedResourceRequest сообщение
подпись:
HyNQvfk2OrP / nMFjLJdNih4c8N8 =
2011-04-02 19: 16: 15 377 (GMT-5) [16]
DEBUG DotNetOpenAuth.Messaging.Channel
- Применение секретов к сообщению для подготовки к подписанию или подписи
проверка. 2011-04-02 19: 16: 15,423
(Время по Гринвичу-5) [16] DEBUG
DotNetOpenAuth.Messaging.Bindings -
Построенная базовая строка подписи:
GET & HTTP% 3A% 2F% 2Flocalhost% 3A16468% 2FApi% 2FHelloWorld & oauth_consumer_key% 3Df9fa91faa048434a86ab95681e9f732d% 26oauth_nonce% 3DN7SPWJPl% 26oauth_signature_method% 3DHMAC-SHA1% 26oauth_timestamp% 3D1301789775% 26oauth_token% 3D7ix8k5NXN4NE1EXQWlHYE6klk7A% 253d% 26oauth_version% 3D1.0
2011-04-02 19: 16: 15,424 (GMT-5) [16]
DEBUG
DotNetOpenAuth.Messaging.Bindings -
Связующий элемент
DotNetOpenAuth.OAuth.ChannelElements.SigningBindingElementChain
применяется к сообщению. 2011-04-02
19: 16: 15.424 (GMT-5) [16] DEBUG
DotNetOpenAuth.Messaging.Bindings -
Связующий элемент
DotNetOpenAuth.Messaging.Bindings.StandardExpirationBindingElement
применяется к сообщению. 2011-04-02
19: 16: 15.424 (GMT-5) [16] DEBUG
DotNetOpenAuth.Messaging.Bindings -
Связующий элемент
DotNetOpenAuth.Messaging.Bindings.StandardReplayProtectionBindingElement
применяется к сообщению. 2011-04-02
19: 16: 15.424 (GMT-5) [16] DEBUG
DotNetOpenAuth.Messaging.Bindings -
Связующий элемент
DotNetOpenAuth.OAuth.ChannelElements.OAuthHttpMethodBindingElementне относится к сообщению. 2011-04-02
19: 16: 15,528 (GMT-5) [16] DEBUG
DotNetOpenAuth.Messaging.Bindings -
Связующий элемент
DotNetOpenAuth.OAuth.ChannelElements.TokenHandlingBindingElement
не относится к сообщению. 2011-04-02
19: 16: 15,528 (GMT-5) [16] DEBUG
DotNetOpenAuth.Messaging.Channel -
После обработки связующего элемента
получено
AccessProtectedResourceRequest (1.0)
сообщение: oauth_token:
7ix8k5NXN4NE1EXQWlHYE6klk7A =
oauth_consumer_key:
f9fa91faa048434a86ab95681e9f732d
oauth_nonce: N7SPWJPl
oauth_signature_method: HMAC-SHA1
oauth_signature:
HyNQvfk2OrP / nMFjLJdNih4c8N8 =
oauth_version: 1.0 oauth_timestamp:
1301789775
2011-04-02 19: 16: 15,816 (GMT-5) [5]
ИНФОРМАЦИЯ DotNetOpenAuth.Messaging.Channel
- Сканирование входящего запроса на сообщения:
http://localhost:16468/Api/HelloWorld?oauth_token=7ix8k5NXN4NE1EXQWlHYE6klk7A%3D&oauth_consumer_key=f9fa91faa048434a86ab95681e9f732d&oauth_nonce=N7SPWJPl&oauth_signature_method=HMAC-SHA1&oauth_signature=HyNQvfk2OrP%2FnMFjLJdNih4c8N8%3D&oauth_version=1.0&oauth_timestamp=1301789775
2011-04-02 19: 16: 15 826 (GMT-5) [5]
DEBUG DotNetOpenAuth.Messaging.Channel
- Получен входящий запрос: AccessProtectedResourceRequest
2011-04-02 19: 16: 15 826 (GMT-5) [5]
ИНФОРМАЦИЯ DotNetOpenAuth.Messaging.Channel
- Обработка входящего AccessProtectedResourceRequest (1.0)
сообщение: oauth_token:
7ix8k5NXN4NE1EXQWlHYE6klk7A =
oauth_consumer_key:
f9fa91faa048434a86ab95681e9f732d
oauth_nonce: N7SPWJPl
oauth_signature_method: HMAC-SHA1
oauth_signature:
HyNQvfk2OrP / nMFjLJdNih4c8N8 =
oauth_version: 1.0 oauth_timestamp:
1301789775
2011-04-02 19: 16: 15,826 (GMT-5) [5]
DEBUG
DotNetOpenAuth.Messaging.Bindings -
Проверка входящего
AccessProtectedResourceRequest сообщение
подпись:
HyNQvfk2OrP / nMFjLJdNih4c8N8 =
2011-04-02 19: 16: 15 826 (GMT-5) [5]
DEBUG DotNetOpenAuth.Messaging.Channel
- Применение секретов к сообщению для подготовки к подписанию или подписи
проверка. 2011-04-02 19: 16: 15,853
(Время по Гринвичу-5) [5] ОТЛАДКА
DotNetOpenAuth.Messaging.Bindings -
Построенная базовая строка подписи:
GET & HTTP% 3A% 2F% 2Flocalhost% 3A16468% 2FApi% 2FHelloWorld & oauth_consumer_key% 3Df9fa91faa048434a86ab95681e9f732d% 26oauth_nonce% 3DN7SPWJPl% 26oauth_signature_method% 3DHMAC-SHA1% 26oauth_timestamp% 3D1301789775% 26oauth_token% 3D7ix8k5NXN4NE1EXQWlHYE6klk7A% 253d% 26oauth_version% 3D1.0
2011-04-02 19: 16: 15 853 (GMT-5) [5]
DEBUG
DotNetOpenAuth.Messaging.Bindings -
Связующий элемент
DotNetOpenAuth.OAuth.ChannelElements.SigningBindingElementChain
применяется к сообщению. 2011-04-02
19: 16: 15 853 (GMT-5) [5] DEBUG
DotNetOpenAuth.Messaging.Bindings -
Связующий элемент
DotNetOpenAuth.Messaging.Bindings.StandardExpirationBindingElement
применяется к сообщению. 2011-04-02
19: 16: 15 853 (GMT-5) [5] ОШИБКА
DotNetOpenAuth.OpenId - Повторяемый одноразовый номер
обнаружено (N7SPWJPl 04/03/2011
00:16:15). Отклонение сообщения.
ОБНОВЛЕНИЕ: После еще одного рытья проблема заключается в том, что StandardExpirationBindingElement применяется дважды, что приводит к добавлению Nonce в NonceMemoryStore более одного раза. Я не могу на всю жизнь понять, почему это происходит.