OWASP/SSO_Project

View on GitHub

Showing 24 of 52 total issues

Function exports has 78 lines of code (exceeds 25 allowed). Consider refactoring.
Open

module.exports = (on, config) => {
    config.baseUrl = "https://"+frontendHost+"/#";
    config.env.FRONTENDHOST = frontendHost;
    config.env.MAILHOST = mailHost;
    
Severity: Major
Found in cypress/plugins/index.js - About 3 hrs to fix

    Function onFlowIn has 75 lines of code (exceeds 25 allowed). Consider refactoring.
    Open

        async onFlowIn(req, res, next) {
            const dataIn = req.query.d || req.body.d;
            const pageId = req.query.id || req.body.id;
            if(!pageId || isNaN(pageId)) {
                return res.status(400).send("Invalid flow request - missing parameters");
    Severity: Major
    Found in js-backend/flows/sso-flow.js - About 3 hrs to fix

      Function onFlowOut has 63 lines of code (exceeds 25 allowed). Consider refactoring.
      Open

          onFlowOut(req, res, next) {
              const jwtRequest = req.ssoRequest;
              if(!jwtRequest) {
                  return res.status(400).send("No SSO request forwarded");
              }
      Severity: Major
      Found in js-backend/flows/sso-flow.js - About 2 hrs to fix

        Function exports has a Cognitive Complexity of 18 (exceeds 5 allowed). Consider refactoring.
        Open

        module.exports = (on, config) => {
            config.baseUrl = "https://"+frontendHost+"/#";
            config.env.FRONTENDHOST = frontendHost;
            config.env.MAILHOST = mailHost;
            
        Severity: Minor
        Found in cypress/plugins/index.js - About 2 hrs to fix

        Cognitive Complexity

        Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

        A method's cognitive complexity is based on a few simple rules:

        • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
        • Code is considered more complex for each "break in the linear flow of the code"
        • Code is considered more complex when "flow breaking structures are nested"

        Further reading

        Function checkCustomCa has a Cognitive Complexity of 18 (exceeds 5 allowed). Consider refactoring.
        Open

            async checkCustomCa(req, res, next) {
                let jwtRequest;
                try {
                    jwtRequest = await JWT.verify(req.body.token, this.ownJwtToken, {
                        maxAge: JWT.age().MEDIUM,
        Severity: Minor
        Found in js-backend/flows/authenticator-cert.js - About 2 hrs to fix

        Cognitive Complexity

        Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

        A method's cognitive complexity is based on a few simple rules:

        • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
        • Code is considered more complex for each "break in the linear flow of the code"
        • Code is considered more complex when "flow breaking structures are nested"

        Further reading

        Function checkCustomCa has 56 lines of code (exceeds 25 allowed). Consider refactoring.
        Open

            async checkCustomCa(req, res, next) {
                let jwtRequest;
                try {
                    jwtRequest = await JWT.verify(req.body.token, this.ownJwtToken, {
                        maxAge: JWT.age().MEDIUM,
        Severity: Major
        Found in js-backend/flows/authenticator-cert.js - About 2 hrs to fix

          Function getCert has a Cognitive Complexity of 15 (exceeds 5 allowed). Consider refactoring.
          Open

              getCert(req, res) {
                  let cert = req.connection.getPeerCertificate(true);
                  //console.log("cert login", cert, req.user)
                  
                  if(!cert.hasOwnProperty("subject") || !cert.subject) {
          Severity: Minor
          Found in js-backend/flows/authenticator-cert.js - About 1 hr to fix

          Cognitive Complexity

          Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

          A method's cognitive complexity is based on a few simple rules:

          • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
          • Code is considered more complex for each "break in the linear flow of the code"
          • Code is considered more complex when "flow breaking structures are nested"

          Further reading

          Function getCert has 47 lines of code (exceeds 25 allowed). Consider refactoring.
          Open

              getCert(req, res) {
                  let cert = req.connection.getPeerCertificate(true);
                  //console.log("cert login", cert, req.user)
                  
                  if(!cert.hasOwnProperty("subject") || !cert.subject) {
          Severity: Minor
          Found in js-backend/flows/authenticator-cert.js - About 1 hr to fix

            Function addRoutes has 45 lines of code (exceeds 25 allowed). Consider refactoring.
            Open

                addRoutes(app) {
                    app.use(this.ssoFlow.parseSSOHeader.bind(this.ssoFlow));
                    app.get("/email-confirm", this.localAuthFlow.onEmailConfirm.bind(this.localAuthFlow), MiddlewareHelper.createAuthToken.bind(MiddlewareHelper));
                
                    app.post("/authenticator/delete", MiddlewareHelper.isAuthenticated.bind(MiddlewareHelper), this.authenticatorFlow.onAuthenticatorDelete.bind(this.authenticatorFlow), MiddlewareHelper.showSuccess);
            Severity: Minor
            Found in js-backend/flows/index.js - About 1 hr to fix

              Function onSamlIn has 40 lines of code (exceeds 25 allowed). Consider refactoring.
              Open

                  onSamlIn(req, res, next) {
                      samlp.parseRequest(req, (err, samlData) => {
                          if(err) {
                              console.error(err);
                              return res.status(400).send("Invalid SAML request");
              Severity: Minor
              Found in js-backend/flows/sso-flow.js - About 1 hr to fix

                Function onFidoLoginPost has 40 lines of code (exceeds 25 allowed). Consider refactoring.
                Open

                    onFidoLoginPost(req, res, next) {
                        const userId = req.user.id;
                        const logResponse = req.body.response;
                        
                        let thisCred, challenge;
                Severity: Minor
                Found in js-backend/flows/authenticator.js - About 1 hr to fix

                  Function onCertLogin has 38 lines of code (exceeds 25 allowed). Consider refactoring.
                  Open

                      async onCertLogin(req, res, next) {
                          const certResp = this.getCert(req, res);
                          if(certResp === false) {
                              return;
                          }
                  Severity: Minor
                  Found in js-backend/flows/authenticator-cert.js - About 1 hr to fix

                    Function onCertRegister has 36 lines of code (exceeds 25 allowed). Consider refactoring.
                    Open

                        onCertRegister(req, res, next) {
                            const email = req.user.username;
                            const label = req.body.label;
                            
                            if(email.indexOf("'") != -1) {
                    Severity: Minor
                    Found in js-backend/flows/authenticator-cert.js - About 1 hr to fix

                      Function onFidoRegisterPost has 36 lines of code (exceeds 25 allowed). Consider refactoring.
                      Open

                          onFidoRegisterPost(req, res, next) {
                              const userId = req.user.id;
                              const regResponse = req.body.response;
                              const label = req.body.label;
                              
                      Severity: Minor
                      Found in js-backend/flows/authenticator.js - About 1 hr to fix

                        Function createAuthToken has 35 lines of code (exceeds 25 allowed). Consider refactoring.
                        Open

                            createAuthToken(req, res, next) {
                                if(!req.user.id) {
                                    return res.status(403).send("User needs to be logged in to finish authentication");
                                }
                                
                        Severity: Minor
                        Found in js-backend/utils/middleware.js - About 1 hr to fix

                          Function parseP12 has 32 lines of code (exceeds 25 allowed). Consider refactoring.
                          Open

                                  parseP12(base64Data) {
                                      return new Promise((resolve, reject) => {
                                          // Clean up
                                          const tmpName = os.tmpdir() + "/cypress";
                                          try {
                          Severity: Minor
                          Found in cypress/plugins/index.js - About 1 hr to fix

                            Function add has 29 lines of code (exceeds 25 allowed). Consider refactoring.
                            Open

                                add(req, object, action, attribute) {
                                    return new Promise((resolve, reject) => {
                                        const userId = req.user ? req.user.id : null;
                                        const userName = req.user && req.user.username ? req.user.username : null;
                                        const ip = this.getIP(req);
                            Severity: Minor
                            Found in js-backend/utils/audit.js - About 1 hr to fix

                              Function onFidoLoginGet has 28 lines of code (exceeds 25 allowed). Consider refactoring.
                              Open

                                  onFidoLoginGet(req, res, next) {
                                      const userId = req.user.id;
                                      
                                      Promise.all([
                                          this.f2l.assertionOptions(),
                              Severity: Minor
                              Found in js-backend/flows/authenticator.js - About 1 hr to fix

                                Function onFlowIn has a Cognitive Complexity of 10 (exceeds 5 allowed). Consider refactoring.
                                Open

                                    async onFlowIn(req, res, next) {
                                        const dataIn = req.query.d || req.body.d;
                                        const pageId = req.query.id || req.body.id;
                                        if(!pageId || isNaN(pageId)) {
                                            return res.status(400).send("Invalid flow request - missing parameters");
                                Severity: Minor
                                Found in js-backend/flows/sso-flow.js - About 1 hr to fix

                                Cognitive Complexity

                                Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

                                A method's cognitive complexity is based on a few simple rules:

                                • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
                                • Code is considered more complex for each "break in the linear flow of the code"
                                • Code is considered more complex when "flow breaking structures are nested"

                                Further reading

                                Avoid deeply nested control flow statements.
                                Open

                                                            if(certHandler.webhook.successContains) {
                                                                passCertificate = (response.indexOf(certHandler.webhook.successContains) != -1);
                                                            } else if(certHandler.webhook.successRegex) {
                                                                passCertificate = response.test(certHandler.webhook.successRegex);
                                                            } else {
                                Severity: Major
                                Found in js-backend/flows/authenticator-cert.js - About 45 mins to fix
                                  Severity
                                  Category
                                  Status
                                  Source
                                  Language