Files
oed/api/OED.Api/Infrastructure/Auth/EveJwtValidator.cs

37 lines
1.2 KiB
C#

using System.IdentityModel.Tokens.Jwt;
using Microsoft.IdentityModel.Protocols;
using Microsoft.IdentityModel.Protocols.OpenIdConnect;
using Microsoft.IdentityModel.Tokens;
namespace OED.Api.Infrastructure.Auth;
public class EveJwtValidator
{
private const string MetadataAddress = "https://login.eveonline.com/.well-known/oauth-authorization-server";
private readonly ConfigurationManager<OpenIdConnectConfiguration> _configManager = new(
MetadataAddress,
new OpenIdConnectConfigurationRetriever()
);
public async Task<JwtSecurityToken> ValidateAsync(string token, string clientId)
{
var config = await _configManager.GetConfigurationAsync();
var parameters = new TokenValidationParameters
{
ValidIssuer = "https://login.eveonline.com",
ValidAudiences = [clientId, "EVE Online"],
IssuerSigningKeys = config.SigningKeys,
ValidateLifetime = true,
ValidateIssuerSigningKey = true,
ValidateAudience = true,
ValidateIssuer = true,
};
var handler = new JwtSecurityTokenHandler();
handler.ValidateToken(token, parameters, out var validatedToken);
return (JwtSecurityToken)validatedToken;
}
}