Альтернативы LsaLogonUser с KERB_S4U_LOGON имеют доступ к сети?

Есть ли альтернативы LsaLogonUser для олицетворения данной учетной записи для доступа к сетевым ресурсам? Я ищу метод олицетворения, который позволил бы мне вызывать удаленный компьютер через UNC в том же домене.

Для исходных данных у меня есть: домен \ имя пользователя.

У меня нет пароля, потому что для этого я использую LsaRegisterLogonProcess и LsaLogonUser с пакетом Kerberos. Локально все работает, и я могу олицетворять и вызывать приложения, используя другое имя пользователя, однако, при попытке получить доступ к удаленной машине с помощью .. \\ remotemachine \ shared \ somefile.bat У меня отказано в доступе.

Обычно я вызываю cmd.exe как команду …, а затем открывается консоль с новым пользователем, но если попытка вызвать путь UNC, доступ запрещен.

Если я открою базовую консоль своим собственным пользователем, я успешно выполню этот UNC-путь. Не папка разрешений, потому что это общедоступный общий ресурс.

Это часть моего рабочего кода:

    ...

NTSTATUS Status = STATUS_SUCCESS;

LSA_OPERATIONAL_MODE unused;

LSA_STRING lsaString;
lsaString.Buffer = "User Impersonated LogonProcess";
lsaString.Length = strlen(lsaString.Buffer);
lsaString.MaximumLength = lsaString.Length + 1;

Status = LsaRegisterLogonProcess(&lsaString, &lsa, &unused);
if (Status != STATUS_SUCCESS) {
printf("LsaRegisterLogonProcess failed: %x\n", Status);
}

...

NTSTATUS status = LsaLogonUser(
lsa,
&origin,
Network,
packageId,
authInfo,
authInfoSize,
0,
&source,
&profileBuffer,
&profileBufLen,
&luid,
&token,
&qlimits,
&subStatus
);

if (status != ERROR_SUCCESS)
{
ULONG err = LsaNtStatusToWinError(status);
printf("LsaLogonUser failed: %x\n", status);
return 1;
}

...

DuplicateTokenEx(token, MAXIMUM_ALLOWED, NULL, SecurityImpersonation, TokenPrimary, &tokenDuplicate);

if (CreateProcessWithTokenW(
tokenDuplicate,
LOGON_WITH_PROFILE,
command,
command_arguments,
CREATE_NEW_CONSOLE,
NULL,
NULL,
&si,
&pi))
{
pi.hThread = NULL;
pi.hProcess = NULL;
CloseHandle(pi.hProcess);
CloseHandle(pi.hThread);
}

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]