मैं जेडब्ल्यूटी का उपयोग कर एएसपीनेट कोर का उपयोग कर एक वेब एपीआई लागू करने की प्रक्रिया में हूं। मैं पहचानकर्ता सर्वर 4 जैसे तीसरे पक्ष के समाधान का उपयोग नहीं कर रहा हूं क्योंकि मैं सीखने की कोशिश कर रहा हूं।एएसपीनेट कोर वेब एपीआई (कोई तीसरी पार्टी) में जेडब्ल्यूटी रीफ्रेश टोकन को कैसे कार्यान्वित करें?
मैं काम करने के लिए जेडब्ल्यूटी विन्यास मिल गया है, लेकिन कैसे जब जेडब्ल्यूटी के समय सीमा समाप्त हो के लिए ताज़ा टोकन को लागू करने पर स्टम्प्ड रहा हूँ।
नीचे startup.cs अंदर मेरे कॉन्फ़िगर विधि में कुछ नमूना कोड है।
app.UseJwtBearerAuthentication(new JwtBearerOptions()
{
AuthenticationScheme = "Jwt",
AutomaticAuthenticate = true,
AutomaticChallenge = true,
TokenValidationParameters = new TokenValidationParameters()
{
ValidAudience = Configuration["Tokens:Audience"],
ValidIssuer = Configuration["Tokens:Issuer"],
ValidateIssuerSigningKey = true,
IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(Configuration["Tokens:Key"])),
ValidateLifetime = true,
ClockSkew = TimeSpan.Zero
}
});
नीचे जेडब्ल्यूटी उत्पन्न करने के लिए उपयोग की जाने वाली नियंत्रक विधि है। मैंने परीक्षण उद्देश्यों के लिए 30 सेकंड की समाप्ति निर्धारित की है।
[Route("Token")]
[HttpPost]
public async Task<IActionResult> CreateToken([FromBody] CredentialViewModel model)
{
try
{
var user = await _userManager.FindByNameAsync(model.Username);
if (user != null)
{
if (_hasher.VerifyHashedPassword(user, user.PasswordHash, model.Password) == PasswordVerificationResult.Success)
{
var userClaims = await _userManager.GetClaimsAsync(user);
var claims = new[]
{
new Claim(JwtRegisteredClaimNames.Sub, user.UserName),
new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString())
}.Union(userClaims);
var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_jwt.Key));
var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha256);
var token = new JwtSecurityToken(
issuer: _jwt.Issuer,
audience: _jwt.Audience,
claims: claims,
expires: DateTime.UtcNow.AddSeconds(30),
signingCredentials: creds
);
return Ok(new
{
access_token = new JwtSecurityTokenHandler().WriteToken(token),
expiration = token.ValidTo
});
}
}
}
catch (Exception)
{
}
return BadRequest("Failed to generate token.");
}
कुछ मार्गदर्शन के लिए बहुत आभारी होंगे।
कोड आप पोस्ट केवल पहुंच टोकन के सत्यापन के लिए प्रासंगिक है, टोकन ताज़ा नहीं:
बादखुश पथ के लिए छद्म कोड है। क्या आप उस कोड को साझा कर सकते हैं जहां आप एक्सेस टोकन उत्पन्न करते हैं? – naslund
निश्चित रूप से, मैंने जेडब्ल्यूटी को उत्पन्न करने के लिए इस्तेमाल किया गया कोड जोड़ा है। – DJDJ