Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System.Linq;
- using System.Threading.Tasks;
- using authorization_service.security.identity;
- using Microsoft.AspNetCore.Http;
- using Microsoft.Extensions.Logging;
- using Microsoft.Extensions.Options;
- using Optional;
- using Optional.Unsafe;
- namespace authorization_service.security.jwe
- {
- public class JWEAuthorizationMiddleware
- {
- private readonly RequestDelegate _next;
- private readonly ILogger<JWEAuthorizationMiddleware> logger;
- private readonly SessionConfiguration _configuration;
- public JWEAuthorizationMiddleware(
- RequestDelegate next,
- IOptions<SessionConfiguration> configuration,
- ILogger<JWEAuthorizationMiddleware> logger)
- {
- this._next = next;
- this.logger = logger;
- this._configuration = configuration.Value;
- }
- public async Task Invoke(HttpContext context, ITokenHandler tokenHandler)
- {
- var token = context.Request.Headers["Authorization"].FirstOrDefault()?.Split(" ").Last();
- Option<Claims> result = tokenHandler.Verify(token);
- if (result.HasValue) {
- logger.LogInformation("Parsed Claim");
- Claims claims = result.ValueOrFailure();
- if (IsValidClaim(claims))
- {
- context.Items["principal"] = claims;
- context.Items["User"] = claims;
- context.Items["token"] = token;
- logger.LogInformation("Packed Content into claim");
- }
- }
- await _next(context);
- }
- private bool IsValidClaim(in Claims claims)
- {
- if (claims.Issuer.Equals(_configuration.Issuer) &&
- claims.Audience.Equals(_configuration.Audience)) {
- return true;
- }
- return false;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement