After a couple of days of digging I'll answer my own question with what I found.
I'm not sure if this is a bug or the way it's supposed to work.
For basic authorization, you have to set username/password in the pageSettings.
Here is the changed code.
var casper = require('casper').create({
verbose: true,
logLevel: 'debug',
pageSettings: {
userName: 'uid',
password: 'pwd'
}
});
casper.start();
casper.open( 'http://internal/page.php').then(function(response) {
this.fill('form[action="page2.php"]', {
cattype: 'BLAH2',
needdate: '04/21/2014'
}, true);
});
casper.then(function() {
this.capture('screenshot-form-entry.png');
});
casper.run(function() {
this.exit();
});