[英]Web API not authorized when using JwtBearerAuthenticationOptions
我已從演練的第二部分中獲取了如何使用jwt進行授權的信息,這樣我就可以從客戶端獲取訪問令牌並授權他們使用api。 但是,我似乎無法使它正常工作。 我不斷收到Postman的401消息,並伴隨着:
{
"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創建的授權服務,因此本教程的第一部分不適用於我。
智威湯遜
{
"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
任何幫助將不勝感激。
謝謝!
我認為,請檢查以下內容:
首先:
檢查您的秘密base64代碼。 'abc123'是真的嗎? 我正在您的密碼上jwt.io網站上檢查您的令牌。 但簽名無效
其次:
檢查您的有效載荷值。 什么是“ iss”您的jwt有效載荷。 /您的發行人驗證設置為“任何”
什么是“聽”您的jwt有效載荷。 /您的受眾群體驗證設置為“ webreport_service”
想一想。
最良好的問候
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.