2017-03-15 90 views
0

我已經從第2部分中介紹瞭如何使用jwt進行授權,以便我可以從我的客戶端獲取訪問令牌並授權他們使用api。但是,我似乎無法得到這個工作。我不斷獲取從郵遞員401消息伴隨着一個:使用JwtBearerAuthenticationOptions時未授權的Web API

{ 
    "Message": "Authorization has been denied for this request." 
} 

教程鏈接:http://bitoftech.net/2014/10/27/json-web-token-asp-net-web-api-2-jwt-owin-authorization-server/

訪問令牌來自我已經在Java中創建了一個授權服務,所以這本手冊的第一部分做不適用於我。

JWT

{ 
    "exp": 1489641048, 
    "user_name": "testuser", 
    "authorities": [ 
    "USER" 
    ], 
    "jti": "2dde11c3-2f06-496c-9b36-4dbf71cdc2e2", 
    "client_id": "webreport_service", 
    "scope": [ 
    "USER" 
    ] 
} 

的Web API代碼片段

public void ConfigureOAuth(IAppBuilder app) 
    { 

     var audience = "webreport_service"; 

     // Api controllers with an [Authorize] attribute will be validated with JWT 
     app.UseJwtBearerAuthentication(
      new JwtBearerAuthenticationOptions 
      { 
       AuthenticationMode = AuthenticationMode.Active, 
       AllowedAudiences = new[] { audience }, 
       IssuerSecurityTokenProviders = new IIssuerSecurityTokenProvider[] 
       { 

        new SymmetricKeyIssuerSecurityTokenProvider("Any", "abc123") 
       } 
      }); 

    } 

它是從什麼是在第2節的鏈接略有不同,但那是因爲我不知道的base64編碼我的祕密,我也不會把發行人放在我的jwt中。

郵差

GET /api/protected HTTP/1.1 
Host: localhost:54706 
Authenticate: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE0ODk2NDEyOTAsInVzZXJfbmFtZSI6InRlc3R1c2VyIiwiYXV0aG9yaXRpZXMiOlsiVVNFUiJdLCJqdGkiOiJlMDNkNWZmZC1hZWI4LTRkODctOGQ3My0zNjhjYjQ2ZDg2OWUiLCJjbGllbnRfaWQiOiJ3ZWJyZXBvcnRfc2VydmljZSIsInNjb3BlIjpbIlVTRVIiXX0.C4hivwA1VF-0GO0xCVUoDIheWQWlAcVWvAzChZTgrHY 
Cache-Control: no-cache 
Postman-Token: ff628109-d5f4-76e0-41c2-e0c7d377b93f 

任何幫助將不勝感激。

謝謝!

回答

0

我想是這樣檢查以下內容:

首先:

檢查你的祕密的base64編碼。 'abc123'是真的嗎? 我在你的密碼上檢查jwt.io網站上的令牌。 但無效簽名

其次:

檢查有效載荷值。 什麼是'你'的jwt有效載荷。 /您的發行人驗證集'任何'

什麼是'aud'您的jwt有效載荷。 /您的觀衆驗證集'webreport_service'

想一想。

最好的方面