Я собираюсь говорить о Win32 API, но я почти уверен, что вы можете вызывать их из .NET. Чек http://pinvoke.net.
Вам необходимо вызвать API LogonUser, чтобы создать токен доступа, который представляет учетные данные пользователя домена B.
Затем вы вызываете ImpersonateLoggedOnUser, передавая этот токен доступа. Вызывающий поток будет выдавать себя за учетные данные домена B, пока вы не выдадите за другой набор учетных данных или не вызовете API RevertToSelf.
Я думаю, само собой разумеется, что для успешного вызова LogonUser машине, на которой вы работаете, нужно будет доверять домену B.