37 lines
1.2 KiB
C#
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;
|
|
}
|
|
}
|