2013-03-05 103 views
1

我一直在使用DotNetOpenAuth創建自己的資源服務器。一切正常,我可以檢索令牌罰款。但是,我現在開始構建一個調用我的資源服務器的客戶端,並且DotNetOpenAuth返回的響應有一個小問題。我期望DotNetOpenAuth返回一個代表訪問令牌的JSON字符串。它這樣做,但有一個小的警告:在JSON字符串以十六進制數前綴和後綴以零:DotNetOpenAuth令牌響應

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返回一個常規的內容長度標題和不輸出前綴和後綴?

是完整的,我跑我的授權服務器在.NET 4.0的ASP.NET MVC應用4使用下面的代碼(它使用依賴注入):

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; 
    } 
} 

回答

0

的問題是在DotNetOpenAuth庫,其中Content-length標頭未與請求一起發送。這導致了添加表示請求長度的十六進制數字。在報告這個錯誤之後,DotNetOpenAuth庫的作者已經修復了它。