This doc doesn’t answer my question and it also has important part missing in the diagram.
Before the client send any kind of messages, as a first step, it Connects to AP! And at that point AP should make a decision, restrict the device to Captive portal requests only or grant full access without bothering the client with all kind of web authentication.
And this is how most captive portals work.
In case of Meraki, the AP doesn’t query RADIUS server at device’s connection time, it just stupidly puts it in restricted mode where first attempt to any TCP traffic will trigger the redirection to the captive portal. At least this is what I observe.
Imagine you have a game console, that has no browser to deal with the Captive Portal, and you want to allow it to connect, just by registering it in RADIUS DB with the hope that AP is smart enough to check that status first. The result – it will not work.