Skip to content

Instantly share code, notes, and snippets.

@wellingtonjhn
Created April 29, 2018 07:52
Show Gist options
  • Select an option

  • Save wellingtonjhn/6def8db60abe2634e753cda8f9eca619 to your computer and use it in GitHub Desktop.

Select an option

Save wellingtonjhn/6def8db60abe2634e753cda8f9eca619 to your computer and use it in GitHub Desktop.
JwtService
public class JwtService : IJwtService
{
private readonly JwtSettings _settings;
public JwtService(JwtSettings settings)
{
_settings = settings;
}
public object CreateJwtToken(User user)
{
var identity = GetClaimsIdentity(user);
var handler = new JwtSecurityTokenHandler();
var securityToken = handler.CreateToken(new SecurityTokenDescriptor
{
Subject = identity,
Issuer = _settings.Issuer,
Audience = _settings.Audience,
IssuedAt = _settings.IssuedAt,
NotBefore = _settings.NotBefore,
Expires = _settings.Expiration,
SigningCredentials = _settings.SigningCredentials
});
var jwtToken = handler.WriteToken(securityToken);
return new
{
access_token = jwtToken,
token_type = "bearer",
expires_in = (int)_settings.ValidFor.TotalSeconds
};
}
private static ClaimsIdentity GetClaimsIdentity(User user)
{
return new ClaimsIdentity
(
new GenericIdentity(user.Email),
new[] {
new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString()),
new Claim(JwtRegisteredClaimNames.Sub, user.Name)
}
);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment