Отговор на токен DotNetOpenAuth

Използвам DotNetOpenAuth, за да създам собствен сървър за ресурси. Всичко работи, мога да извлека жетони добре. Сега обаче започвам да създавам клиент, който извиква моя сървър за ресурси и имам малък проблем с отговора, върнат от DotNetOpenAuth. Очаквах DotNetOpenAuth да върне JSON низ, представляващ токена за достъп. Той прави това, но с малко предупреждение: JSON низът е с префикс шестнадесетично число и постфиксиран с нула:

HTTP/1.1 200 OK
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Transfer-Encoding: chunked
Content-Type: application/json; charset=utf-8
Server: Microsoft-IIS/8.0
X-AspNetMvc-Version: 4.0
X-AspNet-Version: 4.0.30319
X-SourceFiles: =?UTF-8?B?RDpcUGVyc29vbmxpamtlIHByb2plY3RlblxpY2hlY2ttb3ZpZXMtZG90bmV0XHNyY1xXZWJBcGlcdG9rZW5zXA==?=
X-Powered-By: ASP.NET
Date: Mon, 04 Mar 2013 13:04:12 GMT

3d2
{"access_token":"gAAAADrFpM2DRiBdqVBPdEq_ISvdfZb6CaRMZr7vWcn2AuKGs2TXyNlzLaUX8xtLQfxFdbTYBIK-LF8cfEwvV8gUKC0lpcodb9OWm9sUmu_IIApmMPIBQDgT1LtkEjOsv_gQdmwN906Pd1KczI2O3Pt1DqzhL_Rpub9zJQmh6EKDp4_EJAEAAIAAAACTvB0tYmrRNExdGQhGBrHgYnlgt7Rw-ilB2wLScW1YgOHE6MOY0WrfKG9aFLUAcmADYSrX55n9mfC9NKDXJBARc5ev-hnWTnApw7yq51c1KwbKv7bxoEVzar8eAAFrJi_OBQjlcaN8IFfnryu1VK_C1o-U2gLgdnBZzFcCDhgNseRFjUCmYXssEvjUswg0Oy3c_F_IXpP85kL6QCYmpGwV1juTuiMwMuZOCbcPMAssM70JMi7Ai7zT7hxCCZ5SLgeyLjBqPX7bXnhRIO24mkZ9pN5pCzorjOX_8rqdrPwR6WkPy0tc69oyBTak8L6nJYWzxfuAVhZGEowHCx3KNWfG_R_w23N7Y3c9HoIfO6RSYpnfieGLKhxHxd1_jsczGtM","token_type":"bearer","expires_in":3600,"refresh_token":"q5NN!IAAAANCHUJ5tukpT_UzgkRGCTM4Oy1qgw8GP5wn8HDS2jN1isQAAAAFfLe6KZMht1mmbIbF6RihvMZvjrwtaoZRZbaavPbte9CtjLWB_isHOroLv669rq1PmTppmVyo1Om3HVvp2AC16SDe7l02POHIYbPs_Cox6kekHc74_8pLP8SAGcrXy1EzjAPKc_UksMTp8aqaAnrU3ulx2TYYrRMyYb6pW7awO6_aiHtLixrF6dVA1-6DWvKuCSeJW0oZCm45Op1-wht8qAWkK3B70C6dZU6dmsggleA","scope":"movie list user comment"}
0 

Ако погледна официалната спецификация (http://tools.ietf.org/html/draft-ietf-oauth-v2-31#section-4.1.4), не казва нищо за префикс и/или постфикс. Изходът правилен ли е или това е грешка в DotNetOpenAuth? Едно нещо, което ме порази в отговора, че нямаше Content-length заглавка. Това ме накара да повярвам, че може би низът 3d2 всъщност е дължината на съдържанието. Вярвам, че това е така, тъй като 3d2 в шестнадесетичен е 978 в десетичен знак, което е точно дължината на JSON низа между 3d2 и 0.

Има ли някакъв начин да конфигурирам DotNetOpenAuth да връща обикновен хедър с дължина на съдържанието и да не извежда пре- и постфикса?

За да бъда завършен, стартирам моя сървър за оторизация в приложение ASP.NET MVC 4 на .NET 4.0, използвайки следния код (който използва инжектиране на зависимости):

public sealed class TokensController : Controller
{
    private readonly AuthorizationServer authorizationServer;

    public TokensController(AuthorizationServer authorizationServer)
    {
        this.authorizationServer = authorizationServer;
    }

    public ActionResult Create()
    {
        var outgoingWebResponse = this.authorizationServer.HandleTokenRequest(this.Request);
        var asActionResult = outgoingWebResponse.AsActionResult();
        return asActionResult;
    }
} 

person Erik Schierboom    schedule 05.03.2013    source източник


Отговори (1)


Проблемът беше в библиотеката DotNetOpenAuth, където заглавката Content-length не беше изпратена заедно със заявката. Това доведе до добавянето на шестнадесетично число, обозначаващо дължината на заявката. След докладване на тази грешка, тя е коригирана от автора на библиотеката DotNetOpenAuth.

person Erik Schierboom    schedule 15.08.2014