Class ApiKeyExtension<G>

java.lang.Object
dev.relism.flash.ext.security.apikey.ApiKeyExtension<G>
All Implemented Interfaces:
dev.relism.flash.ext.security.AuthenticationMechanism, dev.relism.flash.extension.FlashExtension

public final class ApiKeyExtension<G> extends Object implements dev.relism.flash.extension.FlashExtension, dev.relism.flash.ext.security.AuthenticationMechanism
API keys sent as Authorization: Bearer <prefix>_<id>.<secret>. The prefix makes a key recognisable at a glance and to secret scanners; the id is what the store is queried by; only a SHA-256 of the secret is ever stored — a KDF would add nothing to 192 random bits.

 app.install(new SecurityExtension())
    .install(new ApiKeyExtension<>("gk", keys::find));
 
  • Constructor Details

    • ApiKeyExtension

      public ApiKeyExtension(String prefix, ApiKeyStore<G> store)
      Parameters:
      prefix - identifies this application's keys; letters and digits only
  • Method Details

    • generate

      public GeneratedApiKey generate()
      A new key: 72 bits of id, 192 bits of secret.
    • authenticate

      public dev.relism.flash.ext.security.Principal authenticate(dev.relism.flash.models.Request req)
      Specified by:
      authenticate in interface dev.relism.flash.ext.security.AuthenticationMechanism
    • scheme

      public dev.relism.flash.ext.security.SecurityScheme scheme()
      Specified by:
      scheme in interface dev.relism.flash.ext.security.AuthenticationMechanism
    • configure

      public void configure(dev.relism.flash.extension.FlashRegistrar<?> app, dev.relism.flash.extension.FlashContext ctx)
      Specified by:
      configure in interface dev.relism.flash.extension.FlashExtension