diff options
author | 杨宇千 <crupest@outlook.com> | 2019-07-20 19:01:35 +0800 |
---|---|---|
committer | 杨宇千 <crupest@outlook.com> | 2019-07-20 19:01:35 +0800 |
commit | eb50fc7ad1252d0e397e969e1a7eb33720150b00 (patch) | |
tree | 371933aa07605d7eed95f808245e792f65196adb /Timeline/Startup.cs | |
parent | a97a7c58c6d7b998432cbe3b09cedee463c46653 (diff) | |
download | timeline-eb50fc7ad1252d0e397e969e1a7eb33720150b00.tar.gz timeline-eb50fc7ad1252d0e397e969e1a7eb33720150b00.tar.bz2 timeline-eb50fc7ad1252d0e397e969e1a7eb33720150b00.zip |
Write a custom authenticate handler.
Diffstat (limited to 'Timeline/Startup.cs')
-rw-r--r-- | Timeline/Startup.cs | 33 |
1 files changed, 11 insertions, 22 deletions
diff --git a/Timeline/Startup.cs b/Timeline/Startup.cs index acabe55c..a865f366 100644 --- a/Timeline/Startup.cs +++ b/Timeline/Startup.cs @@ -10,6 +10,7 @@ using Microsoft.Extensions.DependencyInjection; using Microsoft.IdentityModel.Tokens; using System.Text; using System.Threading.Tasks; +using Timeline.Authenticate; using Timeline.Configs; using Timeline.Formatters; using Timeline.Models; @@ -53,28 +54,16 @@ namespace Timeline var jwtConfig = Configuration.GetSection(nameof(JwtConfig)).Get<JwtConfig>(); services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme) - .AddJwtBearer(o => - { - o.Events = new JwtBearerEvents - { - OnMessageReceived = delegate (MessageReceivedContext context) - { - context.Request.Query.TryGetValue("token", out var value); - if (value.Count == 1) - { - context.Token = value[0]; - } - return Task.CompletedTask; - } - }; - o.TokenValidationParameters.ValidateIssuer = true; - o.TokenValidationParameters.ValidateAudience = true; - o.TokenValidationParameters.ValidateIssuerSigningKey = true; - o.TokenValidationParameters.ValidateLifetime = true; - o.TokenValidationParameters.ValidIssuer = jwtConfig.Issuer; - o.TokenValidationParameters.ValidAudience = jwtConfig.Audience; - o.TokenValidationParameters.IssuerSigningKey = new SymmetricSecurityKey(Encoding.ASCII.GetBytes(jwtConfig.SigningKey)); - }); + .AddScheme<AuthOptions, AuthHandler>(AuthConstants.Scheme, AuthConstants.DisplayName, o => + { + o.TokenValidationParameters.ValidateIssuer = true; + o.TokenValidationParameters.ValidateAudience = true; + o.TokenValidationParameters.ValidateIssuerSigningKey = true; + o.TokenValidationParameters.ValidateLifetime = true; + o.TokenValidationParameters.ValidIssuer = jwtConfig.Issuer; + o.TokenValidationParameters.ValidAudience = jwtConfig.Audience; + o.TokenValidationParameters.IssuerSigningKey = new SymmetricSecurityKey(Encoding.ASCII.GetBytes(jwtConfig.SigningKey)); + }); services.AddScoped<IUserService, UserService>(); services.AddScoped<IJwtService, JwtService>(); |