I think it needs to use the wifi's DNS to get to the captive portal, once you're "logged in" you can set it back to your own DNS server.
Doing this on my Macbook which I use for travel is annoying, but this thread prompted me to google for an easy way to do it, so thanks for posting

I'm far from an expert. Nonetheless, I just had a problem connecting on a MacBook, and here's how I solved it. I created a new Location in the Network pane. By default, the new Location did not have DNS servers listed, and I added none. I connected, got directed to the captive portal, authenticated, and then switched back to the Location I wanted to use, which did have my preferred DNS servers.
If that contradicts the advice or experiences listed above, please explain. As I said, I'm not an expert.