簡體   English   中英

使用JwtBearerAuthentication在aspnet5 rc1 Web API2標識3中發出刷新令牌

[英]Issue a refresh token in aspnet5 rc1 Web API2 identity 3 using JwtBearerAuthentication

我目前仍停留在如何在aspnet5中實現刷新令牌流的機制上

目標 :我想攔截每筆交易,以檢查令牌是否已過期或即將過期,如果是,請對其進行續訂。 (我已經在驗證它的簽名了)。

我發現可以在設置JWT選項時在Startup.cs中發現到期時間:

app.UseJwtBearerAuthentication(options =>
        {
            options.Audience = "http://localhost:7001"; 
            //options.Authority = "http://localhost:7001";
            options.AutomaticAuthenticate = true;
            options.RequireHttpsMetadata = false;

            options.TokenValidationParameters = new TokenValidationParameters()
            {
                LifetimeValidator = (DateTime? notBefore, DateTime? expires, SecurityToken securityToken, TokenValidationParameters validationParameters) =>
                {                      
                    if (expires.Value < DateTime.UtcNow)
                    {
                        // it's expired! issue a refresh token here? 
                        return false;
                    }
                    return true;
                },
                IssuerSigningKey = key,
                ValidAudience = tokenOptions.Audience,
                ValidIssuer = tokenOptions.Issuer,
                ValidateSignature = true,
                ValidateLifetime = true,
                ClockSkew = TimeSpan.FromMinutes(10)
            };
        });

目前,這只是引發一個異常,即“生命周期驗證程序失敗”。這就是我的意思。

我要這樣做正確嗎? 這是檢查到期時間的正確地方嗎? 我如何具體要求API從此處發出刷新令牌?

我要這樣做正確嗎? 這是檢查到期時間的正確地方嗎?

否:盡管資源服務器(即API端點)應始終確保接收到的令牌仍然有效,但續訂過期的令牌不是他們的責任。

客戶端應用程序絕對應該向發出刷新令牌的授權服務器詢問自己。 為此,他們可以將令牌響應中返回的expires_in屬性用作提示,並且/或者從您的API捕獲401響應,以確定他們正在使用的訪問令牌是否仍然有效。

我如何具體要求API從此處發出刷新令牌?

從刷新令牌發出新的訪問令牌通常是由授權服務器/身份提供者完成的。 如果您添加了有關應用程序這一方面的更多詳細信息,它肯定會有所幫助(它是否支持OAuth2或OpenID Connect?)

使用OAuth2服務器時,可以使用refresh_token授予來獲取新的訪問令牌:

 POST /token HTTP/1.1
 Host: server.example.com
 Authorization: Basic czZCaGRSa3F0MzpnWDFmQmF0M2JW
 Content-Type: application/x-www-form-urlencoded

 grant_type=refresh_token&refresh_token=tGzv3JOkF0XG5Qx2TlKWIA

暫無
暫無

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

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