I preface this by saying that I've never done it but, here are some ideas that may work for you if you decide to go with Java (these ideas probably won't work with C#)
- Let Apache handle auth, even if it's with mod_perl handlers so that it can be consistent.
- As you write new functionality, do it in Java but running under the same apache using the same auth scheme as everything else
- If you come across functionality that you need in the new Java code that's already been written in the perl sections, rewrite it in Java and change the perl to actually use the new Java (using Inline::Java or something similar). This way you will never have the same functionality in more than one place (or in more than one language). This will also allow you to migrate the old stuff piece by piece.