I'm not sure this is the only way although it does work.
I don't really understand what the initial problem is neither what additional authentication will bring but if this is what you want to deploy, why not looking at reverse proxy ???
I don't know what pfSense reverse proxy package provides (in term of feature) but the is a lot of reverse proxy implementations (Nginx, HAproxy Vulture) that may solve your problem, kind of ;)
Reverse proxy will prompt user for authentication. Most of then will allow you to select among various kind of authentication mechanisms and some will also add capability to create tunnelling and encryption 8)
What I really mean here is that captive portal wording is meaningless here (to me) as there is nothing captive. User may decide to access or not your interface.