anchor.diff:  -module(rabbit_auth_backend_kerberos).
   
   -include_lib("rabbit_common/include/rabbit.hrl").
  --behaviour(rabbit_auth_backend).
  +-behaviour(rabbit_authn_backend).
   
   -define(APPLICATION, begin {ok, A} = application:get_application(?MODULE), A end).
   
  --export([init/0, kinit/2, description/0, check_user_login/2, check_vhost_access/2, check_resource_access/3]).
  +-export([init/0, kinit/2, description/0, user_login_authentication/2]).
   -on_load(init/0).
   
   init() ->
  
positive.code:     true ->
        case Kinit of
          {ok, _} ->
            {ok, #user{username     = Username,
                tags         = Tags,
                auth_backend = AuthZ_module,
                impl         = none}};
          {refused, Error} ->
            {refused, Error, []};
  
negative.code:   [{name, <<"Kerberos">>},
     {description, <<"Kerberos authentication">>}].
  
  user_login_authentication(Username, AuthProps) ->
    Password = proplists:get_value(password, AuthProps),
    Kinit = kinit(Username, Password),
    {ok, AuthZ_module} = application:get_env(?APPLICATION, authZ_module),
  