@_chris An API should require some form of authentication to use. It doesn’t really make sense for a web app to require authentication but then “native” apps like iOS and Android be able to use the API freely. If they can use the API without authentication, why can’t the web app…?
It might help if you explained more about your project, but in terms of authentication, Passport (and OAuth) would be the most appropriate given its flexibility. You would create OAuth clients for each, well, client that needs to consume your API (web app, iOS app, Android app, etc). Each client can then use the most appropriate grant for that client’s particular use case. So if your Android app doesn’t need to authenticate as a user, then you can use client credentials grant, which is suitable for “machine-to-machine authentication”.
Again, if you explained more about your project (and why your web app will require authentication but your native companion apps don’t for some reason) then we’ll be able to assist more.