tworzysz webservice asmx lub stronę aspx. w jakieś metodzie (webmethod) asmx albo w Page_Load() aspx sprawdzasz, czy w head (ewentualnie post - nie pamiętam) przyszło hasło i login, jeśli tak, to sprawdzasz, czy są poprawne, jeśli są, to robisz Server.TransferRequest(wirtualna ścieżka do żądanego pliku - nazwę pliku wyciągniesz z Request.RawUrl). jeśli hasła i loginu nie ma, to zwracasz status http 401 (unauthorized), przeglądarka wyświetli wtedy okno z pytaniem o te dane.
teraz url rewrite - musisz doinstalować ten moduł do iis. potem musisz dodać taką regułę, która żądanie o plik z roota przekieruje na wywołanie Twojej metody webserwisu lub stronki aspx.
możesz też to zrobić trochę inaczej - hasła żądać nie przez zwrócenie 401, a przez wyświetlenie własnej strony zawierającej odpowiedni formularz.