2010-10-13 7 views
5

Estoy construyendo un subpaquete de autenticación personalizado para MSV1_0 para Windows 7. He utilizado el ejemplo msvsubauth del SDK de Windows y tengo 2 preguntas con respecto a algunos problemas que estoy enfrentando con eso:Implementación del paquete de autenticación de Windows personalizado

  1. cuando estoy tratando sólo para asegurarse de que la rutina GET de invocarse y establezca la propiedad Auth0 en el registro de mi paquete y añadir un código simple al final de la Msv1_0SubAuthenticationRoutine que crea un archivo:

    // 
    // 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 
    

    Aparentemente el paquete la edad se invoca porque cuando ingreso mi contraseña aparece un mensaje de error de Windows "el parámetro es incorrecto", lo cual es una buena señal. ¿Pero por qué estoy obteniendo ese error? cuando se ejecuta exactamente el mismo código desde un archivo .exe por separado, se ejecuta perfectamente y crea el archivo de texto de prueba. Revisé los permisos y configuré el "control total" para "todos". ¿Algunas ideas? el SDK no menciona exactamente qué tipo de aislamiento está creando LSA para el código dentro de los paquetes de autenticación.

  2. El segundo problema es probar el AP. Actualmente, con cada cambio, reconstruyo la biblioteca, la copio en una máquina virtual de prueba y luego en la carpeta System32 y la reinicio. ¿Hay alguna manera más fácil de hacer eso?

¡Gracias de antemano!

+3

¿Sigue sin resolverse? Estoy trabajando en un proyecto similar y me gustaría saber cómo hacer la autenticación personalizada. Estoy votando tu pregunta. – tjameson

+0

Sí, en ese momento he resuelto ese problema. Haga una pregunta sobre su problema específico y trataré de ayudarlo tanto como pueda. Eche un vistazo también en cyglsa - el paquete de autenticación LSA que es parte de cygwin. Es muy útil. –

+0

Aquí está mi publicación en serverfault: http://serverfault.com/questions/254192/custom-handling-of-domain-user-profile-creation. Encontré algunas cosas, pero tal vez te topaste con esto cuando estabas aprendiendo sobre esto. – tjameson

Respuesta

3

depuración en Winlogon y LSASS hace en su mayor tiempo de depuración.

Para facilitar la depuración, puede escribir un proxy AP que exporte las mismas funciones. Cuando se carga, proxy_ap sería

  1. Copie el AP real desde una ubicación conocida a una ubicación temporaly.
  2. LoadLibrary esa DLL, GetProcAddress de todo y reenvía las llamadas que recibe a la DLL recién cargada.
  3. atento a los cambios en el directorio en el que el punto de acceso original, fue copiado de
  4. Cuando se produce un cambio (y si su punto de acceso cambiados) FreeLibrary y Goto paso 2

pero hay que mantener un estricto control sobre qué sucede en su objetivo de desarrollo, porque manejar el modificador dll mientras se manejan las solicitudes provenientes de muchos hilos puede convertirse en una peor pesadilla que lo que está tratando de resolver.

LogonUI.exe inicia una nueva instancia cada vez, pero LSASS.exe es de larga duración.

+ Eche un vistazo al código fuente de CVSNT (http://cvsnt.sourcearchive.com/). Tienen un AP bastante bueno que implementa su. Ejecute la muestra en la cuenta del sistema local con psexec -s (de Microsoft/SysInternals pstools suite)

1

¿Quizás su problema es Todos solo incluyen usuarios autenticados? Esto es sólo una suposición.

Le sugiero que utilice Process Monitor para supervisar los mensajes de acceso denegado o su ruta. Es fantástico para la depuración de permisos/problemas de ruta de todo tipo.

Si experimenta el problema en las pantallas "o desbloquear estación de trabajo" "Cambiar contraseña", y que no le impedirá acceder al sistema, esto debería ser fácil de hacer - configurarlo corriendo, reproduce el problema, vuelve a iniciar sesión y listo.

De lo contrario es posible que tenga que recurrir a trucos como ejecutar esa ruta de código sólo para ciertas cuentas de usuario, en el enésimo intento, etc.

Cuestiones relacionadas