Eu não sei os detalhes do seu aplicativo, mas parece que ele não é compatível com o Active Directory.
Leia a documentação pública para ADS_NAME_TYPE_ENUM .
Esses são os formatos de nome de login com os quais você pode fazer login. "EXT123456" não é um deles.
Eu sei que você acha que "EXT123456" está efetuando login com um sAMAccountName, mas na verdade não é. Veja a documentação novamente. Na verdade, não existe um formato de login válido que se ajuste ao padrão "EXT12345" (ou "johndoe").
Apenas o "nome de usuário" por si só não é um formato de login válido. Bem, na verdade, é um formato de login válido ... para o Nome de exibição do usuário.
O Active Directory tentará resolver isso para um Nome de exibição . ADS_NAME_TYPE_DISPLAY
.
Portanto, se você não puder fazer seu aplicativo aceitar um prefixo de domínio ou um sufixo UPN, ou solicitar que seus usuários façam login com seus nomes de exibição ... O Active Directory não supõe apenas que uma string nua "johndoe" seja uma sAMAccountName.
Mas você não está sozinho. A maioria das pessoas presume que fazer login no AD sem prefixo de domínio ou UPN de alguma forma magicamente mapeia para sAMAccountName. Mas isso não acontece. Se você quiser ver como isso funciona sozinho, use ldp.exe e execute ligações simples usando uma conta de usuário cujo nome de exibição seja diferente de seu sAMAccountName e não forneça um nome de domínio. Qual deles te deixa entrar? É o nome de exibição.