Използвам 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;
}
}