protected override async Task <HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) { var context = _callContextFactory.Create(); SetHeaderParameter(request, HeaderNames.Authorization, context, x => x.AuthorizeInfo); return(await base.SendAsync(request, cancellationToken)); }
/// <summary> /// Создает контекст и заполняет его из JWT-токена /// и заголовков запроса /// </summary> /// <returns>Контекст с данными пользователя</returns> public ISecurityContext Create() { var callContext = _callContextFactory.Create(); var permissions = GetPermissions(callContext); var ip = _loopbackIpFilter.FilterIp(callContext.RequestCallerIp); return(new SecurityContext(callContext.UserId, ip, permissions)); }
/// <summary> /// Обогащает свойства сообщения данными из контекста вызова: пользователь, домаен и т.п. /// </summary> /// <param name="message">Сообщение, свойства которого нужно обогатить</param> protected void FillPropertiesFromCallContext(BaseMessage message) { var context = _callContextFactory.Create(); message.Properties.Add(MessagingContextHeaders.UserId, context.UserId); message.Properties.Add(MessagingContextHeaders.UserDomain, context.UserDomain); message.Properties.Add(MessagingContextHeaders.RequestId, context.RequestId); message.Properties.Add(MessagingContextHeaders.RequestCallerIp, context.RequestCallerIp); message.Properties.Add(MessagingContextHeaders.AuthorizeInfo, context.AuthorizeInfo); }
protected override async Task <HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) { var context = _callContextFactory.Create(); SetHeaderParameter(request, CompanyHttpHeaders.RequestId, context, x => x.RequestId); SetHeaderParameter(request, CompanyHttpHeaders.RequestHeaderCallerIp, context, x => x.RequestCallerIp); SetHeaderParameter(request, CompanyHttpHeaders.UserId, context, x => x.UserId); SetHeaderParameter(request, CompanyHttpHeaders.UserDomain, context, x => x.UserDomain); return(await base.SendAsync(request, cancellationToken)); }
/// <summary> /// Создает контекст и заполняет его из WindowsIdentity /// </summary> /// <returns>Контекст</returns> public ISecurityContext Create() { var callContext = _callContextFactory.Create(); var httpContext = _httpContextAccessor.HttpContext; if (!(httpContext?.User?.Identity is WindowsIdentity identity) || !identity.IsAuthenticated) { identity = WindowsIdentity.GetCurrent(); } var name = !string.IsNullOrWhiteSpace(callContext.UserId) ? callContext.UserId : identity.Name; var ip = _loopbackIpFilter.FilterIp(callContext.RequestCallerIp); return(new NtlmSecurityContext(CleanUserName(name), ip, _httpClientFactory)); }