например,
Код: Выделить всё
var app = builder.Build();
app.MapPost("/oauth2/token", ([FromForm] string? client_id,
[FromForm] string? client_secret) =>
{
// Your credential validation logic here
if (client_id != "my-api-client" || client_secret != "top-secret")
{
return Results.BadRequest(new { error = "invalid_client" });
}
var tokenHandler = new JwtSecurityTokenHandler();
var tokenDescriptor = new SecurityTokenDescriptor
{
Subject = new ClaimsIdentity(new[]
{
new Claim("client_id", client_id),
new Claim(ClaimTypes.Role, "api_client")
}),
Expires = DateTime.UtcNow.AddMinutes(30),
SigningCredentials = new SigningCredentials(signingKey, SecurityAlgorithms.HmacSha256Signature),
Audience = "resource-api",
Issuer = "custom-auth-server"
};
var token = tokenHandler.CreateToken(tokenDescriptor);
return Results.Ok(new
{
access_token = tokenHandler.WriteToken(token),
token_type = "Bearer",
expires_in = 1800
});
});
app.Run();
Подробнее здесь: https://stackoverflow.com/questions/798 ... th2-in-net