The application I'm working on is currently not free. So, the API
key (or OAuth client credentials in our case) is issued by us to
paying tenants. If that relationship changes, then the credentials
are disabled, removed etc.
These credentials are used to acquire tokens on behalf of user agents,
or even the tenant's own server systems for access. The token can only
be issued by the tenant (assuming they are the only ones possessing
the credentials). The token provided by the client identifies the
tenant, which is useful for attributing usage (including rate limits)
and indicating which content is available to the client. Tenants
upload content that is associated with our content. So, a valid token
signifies authorization for the client to access some set of API
methods, our content (subject to tenant specific rules), and the
tenant's content.
We don't yet have any end user identity or data present within our
application. It's possible we never will, since user-ness is a notion
of the tenant applications using our service.
Cheers,
Jeff