DigestAuth

object DigestAuth

Provides Digest Authentication from RFC 2617.

Source:
DigestAuth.scala
class Object
trait Matchable
class Any

Type members

Classlikes

sealed trait AuthStore[F[_], A]
final class Md5HashedAuthStore[F[_], A](val func: String => F[Option[(A, String)]]) extends AuthStore[F, A]
Companion:
object
Source:
DigestAuth.scala

A function mapping username to a user object and precomputed md5 hash of the username, realm, and password, or None if no user exists.

A function mapping username to a user object and precomputed md5 hash of the username, realm, and password, or None if no user exists.

More secure than PlainTextAuthStore due to only needing to store the digested hash instead of the password in plain text.

Companion:
class
Source:
DigestAuth.scala
final class PlainTextAuthStore[F[_], A](val func: String => F[Option[(A, String)]]) extends AuthStore[F, A]
Companion:
object
Source:
DigestAuth.scala

A function mapping username to a user object and password, or None if no user exists.

A function mapping username to a user object and password, or None if no user exists.

Requires that the server can recover the password in clear text, which is strongly discouraged. Please use Md5HashedAuthStore if you can.

Companion:
class
Source:
DigestAuth.scala

Deprecated types

@deprecated("AuthenticationStore is going away, in favor of explicit subclasses of AuthStore. PlainTextAuthStore maintains the previous, insecure behaviour, whereas Md5HashedAuthStore is the new advised implementation going forward.", "0.23.12")
Deprecated
Source:
DigestAuth.scala

Value members

Concrete methods

def applyF[F[_], A](realm: String, store: AuthStore[F, A], nonceCleanupInterval: Duration, nonceStaleTime: Duration, nonceBits: Int)(implicit F: Async[F]): F[F => A]
Value parameters:
nonceBits

The number of random bits a nonce should consist of.

nonceCleanupInterval

Interval (in milliseconds) at which stale nonces should be cleaned up.

nonceStaleTime

Amount of time (in milliseconds) after which a nonce is considered stale (i.e. not used for authentication purposes anymore).

realm

The realm used for authentication purposes.

store

A partial function mapping (realm, user) to the appropriate password.

Source:
DigestAuth.scala
def challenge[F[_], A](realm: String, store: AuthStore[F, A], nonceCleanupInterval: Duration, nonceStaleTime: Duration, nonceBits: Int)(implicit F: Async[F]): F[Kleisli[F, Request[F], Either[Challenge, ContextRequest[F, A]]]]

Similar to apply, but exposing the underlying challenge cats.data.Kleisli instead of an entire AuthMiddleware

Similar to apply, but exposing the underlying challenge cats.data.Kleisli instead of an entire AuthMiddleware

Side-effect of running the returned task: If req contains a valid AuthorizationHeader, the corresponding nonce counter (nc) is increased.

Value parameters:
nonceBits

The number of random bits a nonce should consist of.

nonceCleanupInterval

Interval (in milliseconds) at which stale nonces should be cleaned up.

nonceStaleTime

Amount of time (in milliseconds) after which a nonce is considered stale (i.e. not used for authentication purposes anymore).

realm

The realm used for authentication purposes.

store

A partial function mapping (realm, user) to the appropriate password.

Source:
DigestAuth.scala

Deprecated methods

@deprecated("Calling apply is side-effecting, please use applyF", "0.23.12")
def apply[F[_] : Sync, A](realm: String, store: String => F[Option[(A, String)]], nonceCleanupInterval: Duration, nonceStaleTime: Duration, nonceBits: Int): F => A
Deprecated
Source:
DigestAuth.scala
@deprecated("Uses a side-effecting NonceKeeper. Use challenge(String, AuthStore, Blocker, Duration, Int, Int).", "0.23.12")
def challenge[F[_], A](realm: String, store: String => F[Option[(A, String)]], nonceKeeper: NonceKeeper)(implicit F: Sync[F]): Kleisli[F, Request[F], Either[Challenge, ContextRequest[F, A]]]
Deprecated
Source:
DigestAuth.scala