Самописный сервис — это что?
Класс, инстанс которого хостится в том же процессе, что основное приложение или отдельный процесс?
Если первое, то заведи что-то вроде
interface IAuthState
{
User CurrentUser
}
В имплементации через IHttpContextAccessor получай доступ к текущему user identity и наваливай в User нужные данные (можно в БД сходить или из claims выдернуть).
Если же сервис — это отдельное приложение, то тут зависит от способа коммуникации с ним.
Но в любом случае все сведётся к тому, чтобы встроить в пайплайн исходящего запроса свой код, который точно так же через IHttpContextAccessor получит доступ к текущему пользователю и далее пропихнет эту инфу в сторонний сервис.
Для HTTP/REST/SOAP и HttpClient'a это делается через HttpMessageHandler и кастомные http-хидеры.
Для WCF есть точки расширения для модификации исходящих сообщений, но название на вскидку не вспомню.
Для GRPC/WebSocket/кастомных протоколов можно либо сгенерить interceptor (тот же Castle Windsor это умеет из коробки) через Dynamic Proxy, либо декоратор через, скажем, T4, ну, или руками написать.