Normal custom login forms only work on a per-server basis. Mika Heinonen came up with this interesting workaround (you have to use a unique login URL per application):
You can make a custom login form which displays different subforms for each application.
The main $$LoginUserForm needs to have only a computed for display Query_String field with the value "", and a computed subform with the formula:
QS := @UpperCase(query_string); appname := @Word(QS; "&APP="; 2); @If (appname = "APP1" : "APP2" : "APP3"; appname; "DefaultLoginSubForm");
Now you can have subforms APP1, APP2, APP3 and a default subform ("DefaultLoginSubForm"), if no application was defined in the login url line.
For example, if you want to launch the login form for application2, you open the url:
http://yourserver.com/app2.nsf?Login&app=app2