public virtual JwtToken Create(BaseValidatingContext baseValidatingContext, JwtServerOptions jwtServerOptions) { if (baseValidatingContext == null) { throw new ArgumentNullException(nameof(baseValidatingContext)); } if (jwtServerOptions == null) { throw new ArgumentNullException(nameof(jwtServerOptions)); } var tokenHadler = new TokenHandler(jwtServerOptions); var startingDate = DateTime.UtcNow; var expiresDate = DateTime.UtcNow.Add(jwtServerOptions.AccessTokenExpireTimeSpan); var token = tokenHadler.GenerateToken( claims: baseValidatingContext.Claims, notBefore: startingDate, expires: expiresDate); var result = new JwtToken { AccessToken = token, ExpiresIn = this.GetTokenExpiral(startingDate, expiresDate), TokenType = JwtBearerDefaults.AuthenticationScheme }; return(result); }
public static IApplicationBuilder UseJwtServer(this IApplicationBuilder app, Action <JwtServerOptions> configureOptions) { if (app == null) { throw new ArgumentNullException(nameof(app)); } var jwtServerOptions = new JwtServerOptions(); configureOptions(jwtServerOptions); app.MapWhen(context => IsValidJwtMiddlewareRequest(context, jwtServerOptions.TokenEndpointPath), appBuilder => appBuilder.UseMiddleware <JwtServerMiddleware>(jwtServerOptions)); return(app); }
public virtual async Task <JwtToken> CreateAsync(BaseValidatingContext baseValidatingContext, JwtServerOptions jwtServerOptions) { Validate(); var tokenHadler = new TokenHandler(jwtServerOptions); var startingDate = DateTime.UtcNow; var expiresDate = DateTime.UtcNow.Add(jwtServerOptions.AccessTokenExpireTimeSpan); var token = tokenHadler.GenerateToken( claims: baseValidatingContext.Claims, notBefore: startingDate, expires: expiresDate); var result = new JwtToken { AccessToken = token, ExpiresIn = this.GetTokenExpiral(startingDate, expiresDate), TokenType = JwtBearerDefaults.AuthenticationScheme }; if (jwtServerOptions.RefreshTokenProvider != null) { var refreshToken = await jwtServerOptions.RefreshTokenProvider.GenerateAsync(baseValidatingContext.Claims); if (!string.IsNullOrWhiteSpace(refreshToken)) { result.RefreshToken = refreshToken; } } void Validate() { if (baseValidatingContext == null) { throw new ArgumentNullException(nameof(baseValidatingContext)); } if (jwtServerOptions == null) { throw new ArgumentNullException(nameof(jwtServerOptions)); } } return(result); }
public JwtServerMiddleware(RequestDelegate next, JwtServerOptions jwtServerOptions) { this.jwtServerOptions = jwtServerOptions ?? throw new ArgumentNullException(nameof(jwtServerOptions)); }