Quick Background: I am designing some aspects of a licensing system. The main app can be thought of as a client "portal", where we will have many versions of "the app" installed across multiple environments/clients/etc.
The process of validating a license will happen daily: the client app will send some data up to a central licensing server to check if the license is still valid. This also provides a way to blacklist or revoke licenses from our end.
I know hard coding credentials is a bad idea, which is why I plan on making this REST "validation" step be unauthenticated. When it comes to the URL I am trying to figure out how to make it flexible while not giving users access to it.
If I put the URL in an properties file somewhere, if a user can manipulate the file they could find a way to bypass/hijack this daily license health check. But by locking in the URL it makes it harder to change (requires code pushes to client to update a URL), which also seems like a bad idea.
Is there a method or patterns that I can use to allow a URL like this to be flexible, easy to change, yet still secure and locked to where only my team can edit it if URLs change? This same question could be applited for any property that could change but needs to still have some sort of lockdown applied to prevent user tampering.