2010-10-13 17 views
5

Sto creando un pacchetto secondario di autenticazione personalizzato per MSV1_0 per Windows 7. Ho utilizzato l'esempio msvsubauth in Windows SDK e ho 2 domande relative ad alcuni problemi con cui sto affrontando:Implementazione del pacchetto di autenticazione Windows personalizzato

  1. Quando sto provando solo per assicurarsi che la routine get del invocato e impostare la proprietà Auth0 nel registro di sistema per il mio pacchetto e aggiungere un semplice codice alla fine del Msv1_0SubAuthenticationRoutine che crea un file:

    // 
    // Cleanup up before returning. 
    // 
    
    
    Cleanup: 
    hTestFile = CreateFile(
           TEXT("C:\\lsa\\lsa.txt"), 
           GENERIC_READ|GENERIC_WRITE, 0, 
           NULL, CREATE_ALWAYS, 
           FILE_ATTRIBUTE_NORMAL, NULL); 
    
    
    if(hTestFile != INVALID_HANDLE_VALUE) { 
         CloseHandle(hTestFile); 
    } 
    
    
    return Status; 
    
    
    } // Msv1_0SubAuthenticationRoutine 
    

    Apparentemente il pacchetto l'età viene invocata perché quando inserisco la mia password ottengo un messaggio di errore da windows "il parametro non è corretto" che è un buon segno. Ma perché sto ottenendo quell'errore? quando lo stesso codice esatto viene eseguito da un file .exe separato, funziona perfettamente e crea il file test di testo. Ho controllato le autorizzazioni e impostato il "controllo completo" per "tutti". Qualche idea? l'SDK non indica esattamente il tipo di isolamento che LSA sta creando per il codice all'interno dei pacchetti auth.

  2. Il secondo problema sta testando la AP. Attualmente con ogni modifica ricostruisco la libreria, copiala su una VM di prova e poi sulla cartella System32 e riavviarla. C'è un modo più semplice per farlo?

Grazie in anticipo!

+3

È ancora non risolto? Sto lavorando a un progetto simile e mi piacerebbe sapere come fare l'autenticazione personalizzata. Sto votando la tua domanda. – tjameson

+0

Sì, in quel momento ho risolto il problema. Per favore, fai una domanda riguardo al tuo problema specifico e cercherò di aiutarti il ​​più possibile. Dai un'occhiata anche a cyglsa: il pacchetto di autenticazione LSA che fa parte di cygwin. È molto utile –

+0

Ecco il mio post su serverfault: http://serverfault.com/questions/254192/custom-handling-of-domain-user-profile-creation. Ho trovato alcune cose, ma forse ti sei imbattuto in questo quando stavi imparando a riguardo. – tjameson

risposta

3

debug in Winlogon e LSASS rende per lo più in termini di tempo di debug.

Per facilitare la vostra debug, si potrebbe scrivere un AP proxy che esporta le stesse funzioni. Una volta caricato, si farebbe proxy_ap

  1. Copiare il vero AP da una località nota per un locationand temperatura.
  2. LoadLibrary che DLL, GetProcAddress di tutto, e inoltrare le chiamate che riceve a quella DLL appena caricata.
  3. Guarda per i cambiamenti nella directory in cui l'originale AP è stato copiato da
  4. Quando si verifica un cambiamento (e se il vostro AP cambiati) FreeLibrary e goto step 2

ma è necessario mantenere uno stretto controllo sul ciò che accade sul vostro obiettivo di sviluppo, perché la manipolazione dell'interruttore dll mentre si occupano di richieste comming da molti fili può diventare un incubo peggiore che ciò che si sta tentando di risolvere.

LogonUI.exe avvia una nuova istanza ogni volta, ma LSASS.exe è longevo.

+ Dai un'occhiata al codice sorgente CVSNT (http://cvsnt.sourcearchive.com/). Hanno un AP carino che implementa su. Esegui l'esempio nell'account di sistema locale con psexec -s (da Microsoft/SysInternals pstools suite)

1

Forse il tuo problema è Tutti includono solo utenti autenticati? Questa è solo una supposizione.

Suggerisco di utilizzare Process Monitor per monitorare i messaggi Accesso negato o per il percorso. È fantastico per il debug di permessi/problemi di percorso di tutti i tipi.

Se si verifica il problema ai o schermi "lo sblocco della workstation", "Change Password", e non impedisce autenticarsi, questo dovrebbe essere facile da fare - impostarlo in esecuzione, riprodurre il problema, riaccedere e hey presto.

In caso contrario potrebbe essere necessario ricorrere a trucchi come l'esecuzione di quel percorso di codice solo per alcuni account utente, sulla ennesimo provare, ecc

Problemi correlati