オンラインで見つけたいくつかの例に基づいて、Asp.net Core REST サービス用の JWT ミドルウェアをいくつか作成しました。応答は次のようになります。
{
"access_token":"...",
"expires_in":3600,
"refresh_token":"???",
"token_type": "Bearer",
}
access_token の作成方法を理解しました:
Claim[] claims = new Claim[]
{
new Claim(JwtRegisteredClaimNames.Sub, strUsername),
new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString()),
new Claim(JwtRegisteredClaimNames.Iat, dtNow.ToUnixTimeSeconds().ToString(), ClaimValueTypes.Integer64)
};
JwtSecurityToken jwtAccess = new JwtSecurityToken(_options.Issuer, _options.Audience, claims, dtNow.DateTime,
dtNow.DateTime.Add(_options.AccessTokenExpiration), _options.SigningCredentials);
問題は、refresh_token をどのように作成するかです。高低を検索しましたが、それに関する多くのドキュメントが見つかりません。基本的に、すべてのリファレンスは、「新しい access_token を作成できる、より長い TTL を持つデータベースに保存されたトークン」と言っています。
では、refresh_token は access_token とまったく同じもので、TTL が長く、データベースに対して検証される追加の手順があるだけですか?
私が見た JWT 応答の例のいくつかは、refresh_token がはるかに短いように見えます。私の access_token は RSA515 を使用した証明書で署名されているため、文字列はちょっと長いです...