Вызов JNI для аутентификации пользователя с использованием LogonUser? - PullRequest
1 голос
/ 15 июня 2009

C ++ noob здесь интересно, как я могу аутентифицировать пользователя Windows через сервлет Java.

Вот код, который я собрал для получения вызова JNI из моего сервлета java с доменом имени пользователя и паролем:

#include <stdio.h>
#include <string.h>
#include <sys/stat.h>
#include <stdlib.h> 

#include "Validate.h"    

JNIEXPORT jstring JNICALL Java_Validate_takeInfo(JNIEnv *env, jobject obj, jstring domain, jstring id, jstring idca, jstring password) 
{
    const char *nt_domain;
    const char *nt_id;
    const char *nt_idca;
    const char *nt_password;

    nt_domain = env->GetStringUTFChars(domain, NULL);
    nt_id = env->GetStringUTFChars(id, NULL);
    nt_idca= env->GetStringUTFChars(idca, NULL);
    nt_password = env->GetStringUTFChars(password, NULL);

    handle hToken = 0;
    char *otherString;
    otherString = LogonUser(nt_id, nt_domain, nt_password, LOGON32_LOGON_NETWORK, LOGON32_PROVIDER_DEFAULT, &hToken );

    jstring newString = env->NewStringUTF((const char*)otherString);
    return newString;
}

Я получаю следующие ошибки при попытке компиляции:

D:\JNI\Validate.cpp(21) : error C2065: 'handle' : undeclared identifier
D:\JNI\Validate.cpp(21) : error C2146: syntax error : missing ';' before
ier 'hToken'
D:\JNI\Validate.cpp(21) : error C2065: 'hToken' : undeclared identifier
D:\JNI\Validate.cpp(24) : error C2065: 'LOGON32_LOGON_NETWORK' : undeclar
tifier
D:\JNI\Validate.cpp(24) : error C2065: 'LOGON32_PROVIDER_DEFAULT' : undec
dentifier
D:\JNI\Validate.cpp(24) : error C3861: 'LogonUser': identifier not found

Я предполагаю, что не включаю то, что мне нужно. Любая помощь с благодарностью.

1 Ответ

0 голосов
/ 15 июня 2009

То, что ваш компилятор не может найти LogonUser, указывает на то, что вам не хватает заголовков Windows. Включить windows.h

Кроме того, общий тип дескриптора окна пишется РУЧКА, все заглавными буквами.

См. LogonUser документы для более подробной информации.

...