How do location-based apps securely verify client locations on the server-side?
Location data is vulnerable to manipulation, with users using VPNs or analyzing network history to send spoof API requests with false location information.
HMAC signatures offer promise, but they can even mimic the shared secret key exchange (Diffie-Hellman) used for HMAC by analyzing network historys.
Authentication tokens don't address this issue, and methods like limiting APIs or implementing honeypots aren't fundamental solutions.
Any insights or solutions for this issue?
Any type of information sent by the client is something the client may or may not manipulate. Based on the HTTP request content there is nothing that will be 100% reliable and from the perspective of data privacy we should be thankful it is like that.
You may maybe try to geolocate a certain IP address that is communicating with you. Things like proxies, VPNs or TOR will bypass such measures and the geolocation will never be accurate.