I have an implementation for an internal API, the requirement is to implement some sort of basic authentication instead of oauth (generating a token).

Do you think there’s any difference between using just an API key vs using a client id + secret?
For what I see it’d be just like saying “using a password” vs “using a user and a password”.

  • kevincox@lemmy.ml
    link
    fedilink
    arrow-up
    1
    ·
    1 year ago

    The difference is that you can have multiple API keys for the same account.

    1. You can revoke API keys from a lost device without changing your password.
    2. You can grant a different service a restricted API key for limited access.
    3. API keys can expire, forcing password expiry is very use unfriendly.

    The password is the “root secret” of the account. It is (mostly) unrevokable and doesn’t expire. It is a huge risk to have the password lying around. So it is better to quickly exchange the password for a less risky token, then you can wipe the password. Then all clients don’t need to store the password. The user just needs to provide it once then lower-value secrets can be used for future authentication.

    • pe1uca@lemmy.pe1uca.devOP
      link
      fedilink
      arrow-up
      1
      ·
      1 year ago

      I don’t fully understand what use case you’re thinking about.
      An API key which expires is very hard to work with, imagine deploying an app with that kind of key, or a service/bot which uses that key.

      Maybe you’re thinking about access tokens, which need to be regenerated every so often and can be generated with a refresh token.