diff --git a/src/cyrsasl_oauth.erl b/src/cyrsasl_oauth.erl index 1290b2822..27b5d92ee 100644 --- a/src/cyrsasl_oauth.erl +++ b/src/cyrsasl_oauth.erl @@ -53,7 +53,7 @@ mech_step(State, ClientIn) -> case prepare(ClientIn) of [AuthzId, User, Token] -> case ejabberd_oauth:check_token( - User, State#state.host, <<"sasl_auth">>, Token) of + User, State#state.host, [<<"sasl_auth">>], Token) of true -> {ok, [{username, User}, {authzid, AuthzId}, @@ -69,12 +69,18 @@ prepare(ClientIn) -> [<<"">>, UserMaybeDomain, Token] -> case parse_domain(UserMaybeDomain) of %% login@domainpwd - [User, _Domain] -> [UserMaybeDomain, User, Token]; + [User, _Domain] -> [User, User, Token]; %% loginpwd - [User] -> [<<"">>, User, Token] + [User] -> [User, User, Token] end; %% login@domainloginpwd - [AuthzId, User, Token] -> [AuthzId, User, Token]; + [AuthzId, User, Token] -> + case parse_domain(AuthzId) of + %% login@domainloginpwd + [AuthzUser, _Domain] -> [AuthzUser, User, Token]; + %% loginloginpwd + [AuthzUser] -> [AuthzUser, User, Token] + end; _ -> error end.