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);
        }
Esempio n. 2
0
        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);
        }
Esempio n. 4
0
 public JwtServerMiddleware(RequestDelegate next, JwtServerOptions jwtServerOptions)
 {
     this.jwtServerOptions = jwtServerOptions ?? throw new ArgumentNullException(nameof(jwtServerOptions));
 }