{"record":{"id":"b683973af143817c","repo":"apache/pulsar","slug":"invalid-auth-data","errorCode":"INVALID_AUTH_DATA","errorMessage":"Unknown user or invalid password","messagePattern":"Unknown user or invalid password","errorType":"exception","errorClass":"AuthenticationException","httpStatus":null,"severity":"error","filePath":"pulsar-broker-common/src/main/java/org/apache/pulsar/broker/authentication/AuthenticationProviderBasic.java","lineNumber":135,"sourceCode":"        return \"basic\";\n    }\n\n    @Override\n    public void incrementFailureMetric(Enum<?> errorCode) {\n        authenticationMetrics.recordFailure(errorCode);\n    }\n\n    @Override\n    public String authenticate(AuthenticationDataSource authData) throws AuthenticationException {\n        AuthParams authParams = new AuthParams(authData);\n        String userId = authParams.getUserId();\n        String password = authParams.getPassword();\n        String msg = \"Unknown user or invalid password\";\n        ErrorCode errorCode = ErrorCode.UNKNOWN;\n        try {\n            if (users.get(userId) == null) {\n                errorCode = ErrorCode.INVALID_AUTH_DATA;\n                throw new AuthenticationException(msg);\n            }\n\n            String encryptedPassword = users.get(userId);\n\n            // For md5 algorithm\n            if ((users.get(userId).startsWith(\"$apr1\"))) {\n                List<String> splitEncryptedPassword = Arrays.asList(encryptedPassword.split(\"\\\\$\"));\n                if (splitEncryptedPassword.size() != 4 || !encryptedPassword\n                        .equals(Md5Crypt.apr1Crypt(password.getBytes(), splitEncryptedPassword.get(2)))) {\n                    errorCode = ErrorCode.INVALID_TOKEN;\n                    throw new AuthenticationException(msg);\n                }\n                // For crypt algorithm\n            } else if (!encryptedPassword.equals(Crypt.crypt(password.getBytes(), encryptedPassword.substring(0, 2)))) {\n                errorCode = ErrorCode.INVALID_TOKEN;\n                throw new AuthenticationException(msg);\n            }\n        } catch (AuthenticationException exception) {","sourceCodeStart":117,"sourceCodeEnd":153,"githubUrl":"https://github.com/apache/pulsar/blob/820761864ed8e2a7d2e52dd9763ad2ae117c1395/pulsar-broker-common/src/main/java/org/apache/pulsar/broker/authentication/AuthenticationProviderBasic.java#L117-L153","documentation":"Basic-auth authenticate: the supplied user id is unknown or the password does not match the configured credentials hash, so authentication is rejected with the generic unknown-user/invalid-password error.","triggerScenarios":"Thrown at pulsar-broker-common/src/main/java/org/apache/pulsar/broker/authentication/AuthenticationProviderBasic.java:135 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Add the user to the basic auth config or use correct credentials","Check for whitespace/case mismatches in the username"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"820761864ed8e2a7d2e52dd9763ad2ae117c1395","analyzedAt":"2026-09-06T00:14:20.138Z","contentChangedAt":"2026-09-06T00:14:20.138Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}