code: func (a *Auth) Authenticate(ctx context.Context, username, password, otp string, strategies ...string) (context.Context, error) {
  	// Default to using all strategies to authenticate.
  	authenticator := a.Strategies.AuthenticatorFor(strategies...)
  	return a.authenticate(ctx, authenticator, username, password, otp)
  }
docs: // Authenticate authenticates the request using the named strategy, and returns
  // a new context.Context with the user embedded. The user can be retrieved with
  // UserFromContext.