簡體   English   中英

WebAPI 不尊重 Jwt 令牌的授權屬性

[英]WebAPI does not respect Jwt token for authorize attribute

我已經實現了此處的所有步驟以及該站點上的其他教程,以使用 AngularJS 和 WebAPI 在我的應用程序中發布和使用 Jwt。 在我的 Startup.cs 中,當AuthorizeAttribute存在時,我調用以下函數來告訴應用程序消費者 Jwt 令牌:

    private void ConfigureOAuthTokenConsumption(IAppBuilder app)
    {

        string issuer = MyIssuer;
        string audienceId = MyAudienceID;
        X509Certificate2 cert = GetMyCertificate();

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

當我運行應用程序時,我可以正常登錄,生成 Jwt 令牌就好了,以角度使用它們並將它們添加到 API 請求中,但我仍然得到 404。我必須在 Jwt 配置中丟失一些東西,所以它是沒有得到驗證,但我沒有收到任何錯誤。

只是為了它,我嘗試實現一個客戶AuthorizeAttribute ,並在IsAuthorized方法中放置一個斷點。 可以看到請求中包含了 Bearer 令牌,但是IsAuthorized返回了 false,並且沒有設置 Principal。

有誰知道我可能會錯過什么? 我離這里很近。

我可能沒有足夠的信息來正確回答這個問題,但最終我沒有以正確的順序提交我的 OWIN 配置語句。 在 Startup.cs 我把app.UseWebApi(config); 在配置我的授權模塊的代碼之前。 app.UseWebApi(config); 在配置代碼的末尾使它開始工作。

我在 ASP.NET 論壇上更好地提出了這個問題: http : //forums.asp.net/p/2070482/5976299.aspx?p=True&t=635803483826595456

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM