# Enhanced Auth Flow

VerneMQ supports [enhanced authentication](http://docs.oasis-open.org/mqtt/mqtt/v5.0/cs02/mqtt-v5.0-cs02.html#_Toc514345528) flows or SASL style authentication for MQTT 5.0 sessions. The enhanced authentication mechanism can be used for initial authentication when the client connects or to re-authenticate clients at a later point.

![](https://1526060617-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FfYGEy1hYXaALnNAYV6sq%2Fuploads%2Fgit-blob-b56314c83d02891ba8f71fd0609c38c9355c8f0a%2Fenhanced_authflow5.svg?alt=media)

The `on_auth_m5` hook allows the plugin to implement SASL style authentication flows by either accepting, rejecting (disconnecting the client) or continue the flow. The `on_auth_m5` hook is specified in the Erlang behaviour [on\_auth\_m5\_hook](https://github.com/vernemq/vernemq_dev/blob/master/src/on_auth_m5_hook.erl) in the [vernemq\_dev](https://github.com/vernemq/vernemq_dev) repo.
