Add authentication module

This PR adds support for an authenticated signing endpoint and a default HMAC authentication provider. This extends on the work originally done by @grittygrease.