private Challenge ProcessStep1(XmppStream stream, Response response, XmppHandlerContext ctx) { var step = new Step2(response.TextBase64); var userName = step.Username; var user = ctx.UserManager.GetUser(new Jid(userName, stream.Domain, null)); log.DebugFormat("User {0} {1}. Realm={2}", userName, user == null ? "not found" : user.ToString(), step.Realm); if (user != null && string.Compare(stream.Domain, step.Realm, StringComparison.OrdinalIgnoreCase) == 0 && user.Sid == null) { if (step.Authorize(userName, user.Password)) { log.DebugFormat("User authorized"); lock (authData) { authData[stream.Id].UserName = userName; } var challenge = new Challenge(); challenge.TextBase64 = string.Format("rspauth={0}", step.GenerateResponse(userName, user.Password, string.Empty)); return(challenge); } else { log.DebugFormat("User not authorized"); } } return(null); }