|
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
using System.IdentityModel.Tokens.Jwt;
using System.Linq;
namespace Microsoft.AspNetCore.Authentication.JwtBearer.Tools;
public record Jwt(string Id, string Scheme, string Name, string Audience, DateTimeOffset NotBefore, DateTimeOffset Expires, DateTimeOffset Issued, string Token)
{
public IEnumerable<string> Scopes { get; set; } = new List<string>();
public IEnumerable<string> Roles { get; set; } = new List<string>();
public IDictionary<string, string> CustomClaims { get; set; } = new Dictionary<string, string>();
public override string ToString() => Token;
public static Jwt Create(
string scheme,
JwtSecurityToken token,
string encodedToken,
IEnumerable<string> scopes = null,
IEnumerable<string> roles = null,
IDictionary<string, string> customClaims = null)
{
return new Jwt(token.Id, scheme, token.Subject, string.Join(", ", token.Audiences), token.ValidFrom, token.ValidTo, token.IssuedAt, encodedToken)
{
Scopes = scopes,
Roles = roles,
CustomClaims = customClaims
};
}
}
|