T398815: WE5.1.2 Verifiable MediaWiki sessions will introduce lower API rate limits for untrusted users, with trusted users being identified by verifiable session tokens (either a JWT cookie or an OAuth 2 access token). We want these tokens to expire quickly as otherwise they are very easy to circumvent. For gadgets and such (which will automatically benefit from the JWT cookie set as part of normal cookie-based session management) and multi-user OAuth 2 applications, this will work fine. For OAuth 1 apps and bot password based clients, we'll issue JWT cookies as a B/C mechanism but we'll recommend developers to move away from these authentication mechanisms - high-traffic apps should all use OAuth 2, as is standard these days.
What's not entirely clear is what single-user apps should do. Today, the best practice for that use case is an owner-only OAuth 2 app. But owner-only apps use an access token with infinite expiry, which we don't want for high-rate-limit clients. Should they use a normal OAuth 2 app with the Client Credentials grant? Or should there be some mechanism to use owner-only apps with a refresh token and short-lived access tokens? Also, how should this be explained on the OAuth 2 app registration interface?
(We'll issue JWT cookies as a B/C mechanism for OAuth 2 owner-only apps as well, but don't want to rely on that as a permanent measure.)