2012-04-30 3 views
10

LogonUser을 사용하여 사용자의 도메인 자격 증명 집합을 확인합니다. 사용자가이 컴퓨터 LogonUser에서 캐시 된 자격 증명을 사용하지 않는 방법은 무엇입니까?

  • 에서 요청 된 로그온 유형을 허가받지 않았습니다 :

    LogonType Current Password    Old password 
    =========== ============================== ======================== 
    Network  Succeeds      Succeeds 
    Batch  Fails (0x00000569)    Fails (invalid password) 
    Interactive Succeeds      Fails (invalid password) 
    

    오류 코드 :

    • 0x00000569 : 로그온 실패 교란 결과

      LogonUser(accountName, domain, password, 
           LOGON32_LOGON_NETWORK, LOGON32_PROVIDER_WINNT50, ref token); 
      

      0x0000052E : 로그온 실패 : Unk nown 사용자 이름이나 암호

    세부 사항 :

    • 사용자는 함수가 true 반환 유효 자격 증명을 입력합니다. (양호)
    • 사용자가 자격 증명을 입력하지 않으면이 함수는 false을 반환합니다. (좋은)

    • 사용자가 자신의 암호를 변경하고 기능이 true 반환 새로운 유효 자격 증명을 입력합니다. (좋은)

    • 사용자가 기능이 false 반환 무효 자격 증명을 입력합니다. (좋은)

    • 사용자가 기능이 true 반환 자신의 자격 증명을 입력합니다.

    주 (나쁜) : 다른 시스템 (그들은 이전에 로그인 한 적이 한), 그리고에 대한 사용자 이동 자격 증명을 입력 경우, LogonUser은 계속 사실을 반환하십시오. 이것은 로컬 컴퓨터에서 캐싱이 발생하지 않는다는 의미입니다. 그러나 어떤 식 으로든 "은 네트워크에 있습니다."입니다. 사용자가 다시 암호 를 변경하고 자신의 새로운 새 자격 증명을 입력하면

    • 는, 함수는 true를 반환합니다.(좋은)
    • 사용자가 기능이 true 반환 자신의 자격 증명을 입력합니다. (나쁜)
    • 사용자가 기능을 false 반환 자신의 이전 자격 증명을 입력합니다. (좋은)

    방법 호출 LogonUser 내가이 캐시 된 자격 증명를 사용하지 도메인을 지시하는 지시 할 수 있습니다 때.

    : 사용자가 자신의 세 (또는 이전) 이전 암호를 윈도우에 로그온하려고하면, 그들은 잘못된 암호 오류가 발생합니다.


    MSDN에서

    :

    LOGON32_LOGON_NETWORK
    이 로그온 유형은 일반 텍스트 암호를 인증하는 고성능 서버를위한 것입니다. LogonUser 함수 이 로그온 유형에 대해 자격 증명을 캐시하지 않습니다.

    LOGON32_LOGON_INTERACTIVE
    이 로그온 유형은 이러한 사용자가 terminal 서버, 원격 쉘, 또는 유사한 방법에 의해 기록되는 방식으로 컴퓨터를 사용하여 대화 할 사용자를 위해 의도된다. 이 로그온 유형은 연결이 끊어진 작업에 대한 로그온 정보를 캐싱하는 의 추가 비용이 있습니다.; 따라서 은 메일 서버와 같은 일부 클라이언트/서버 응용 프로그램에 적합하지 않습니다.

    LOGON32_LOGON_BATCH 이 로그온 유형은 프로세스가 직접 개입하지 않고 사용자를 대신하여 실행될 수있는 배치 서버를위한 것입니다. 이 유형은 메일 또는 웹 서버와 같이 한 번에 많은 일반 텍스트 인증 시도를 처리하는 고성능 서버용입니다.

    내가 인증 일반 텍스트 암호를 오전, 그래서 LOGON32_LOGON_NETWORK를 사용하여 . 대화 형 로그온 캐시 자격 증명은 여기에 허용되지 않습니다. 일괄은 사용시기에 대해 문서화되지 않았지만 단순히 실패합니다.


    업데이트은 : 도메인 만 허용합니다

    • 이전 암호 (안 더 뒤로 어떤)
    • 60 분

    그것은 그것의 나에게 일반의 Active Directory의 "기능"은 1 시간의 유예 기간을 제공합니다.

    나는 유예 기간을 원하지 않으며, 도메인의 설정을 변경하고 싶지 않습니다. (도메인의 설정을 모르는 한 달 동안 유예 기간이 허용됩니다. 이전 암호).

  • 답변

    4

    이것은 NTLM의 기능입니다. 기본 60 분을 변경할 수 있습니다. OldPasswordAllowedPeriod DWORD 값을 분 단위로 도메인 컨트롤러의 HKLM\SYSTEM\CurrentControlSet\Control\Lsa 키에 추가하거나 '암호 기록 적용'정책을 사용하지 않도록 설정할 수 있습니다. LOGON32_PROVIDER_WINNT50과 같은 다른 로그온 공급자를 사용해 볼 수도 있습니다.

    현재 GUI를 제공하고 있다면 LOGON32_LOGON_INTERACTIVE을 사용하면 불리한 점이 없습니다.

    +1

    i * am *'LOGON32_PROVIDER_WINNT50'을 사용합니다. - 부탁 한 NTLM을 사용하고 싶지 않습니다. 질문에 암묵적으로, "NTLM 인증 대신 Kerberos를 어떻게 사용할 수 있습니까?" 그러나 "왜 LogonUser는 Kerberos가 아닌 NTLM을 사용합니까?"*라는 질문은 StackOverflow [ServerFault가 대답 할 수없는 것] (http://serverfault.com/questions/384719/how-to)입니다. -ersure-machine-is-kerberos-domain-joined). –

    관련 문제