123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- using System.IdentityModel.Tokens.Jwt;
- using System.Security.Claims;
- namespace OASystem.API.OAMethodLib.Auth
- {
-
-
-
- public static class JWTBearer
- {
- public static readonly SymmetricSecurityKey SecurityKey = new SymmetricSecurityKey(Guid.NewGuid().ToByteArray());
- public static readonly JwtSecurityTokenHandler JwtTokenHandler = new JwtSecurityTokenHandler();
- public static string GenerateToken(HttpContext httpContext)
- {
-
- var claims = new[] {
- new Claim(ClaimTypes.NameIdentifier, httpContext.Request.Query["user"])
- };
-
- var credentials = new SigningCredentials(SecurityKey, SecurityAlgorithms.HmacSha256);
-
- var token = new JwtSecurityToken("FMGJ-OA", "OA-Users", claims, expires: DateTime.UtcNow.AddSeconds(60), signingCredentials: credentials);
- return JwtTokenHandler.WriteToken(token);
- }
- public static void AddMyJWTBearerAuth(this IServiceCollection services)
- {
-
- services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
- .AddJwtBearer(options =>
- {
- options.TokenValidationParameters =
- new TokenValidationParameters
- {
- LifetimeValidator = (before, expires, token, parameters) => expires > DateTime.UtcNow,
- ValidateAudience = false,
- ValidateIssuer = false,
- ValidateActor = false,
- ValidateLifetime = true,
- IssuerSigningKey = JWTBearer.SecurityKey
- };
- options.Events = new JwtBearerEvents
- {
- OnMessageReceived = context =>
- {
-
- var accessToken = context.Request.Query["access_token"];
-
- if (!string.IsNullOrEmpty(accessToken))
- {
- context.Token = accessToken;
- }
- return Task.CompletedTask;
- }
- };
- });
- }
- }
- }
|