Troubleshooting
로그는 DAST가 인증 프로세스 중에 무엇을 수행하고 기대하는지에 대한 통찰력을 제공합니다. 더 자세한 정보는 인증 보고서를 구성하세요.
특정 오류 메시지 또는 상황에 대한 자세한 정보는 알려진 문제를 참조하세요.
브라우저 기반 분석기는 사용자의 인증을 위해 사용됩니다. 고급 문제 해결을 위해 브라우저 기반 문제 해결을 참고하세요.
로그 읽기
DAST CI/CD 작업의 콘솔 출력은 AUTH
로그 모듈을 사용하여 인증 프로세스에 대한 정보를 보여줍니다.
예를 들어, 다음 로그는 다단계 로그인 양식에 대한 인증 실패를 보여줍니다.
로그인 후에는 홈 페이지가 표시되어야 하지만 대신 로그인 양식이 여전히 남아 있기 때문에 인증에 실패했습니다.
2022-11-16T13:43:02.000 INF AUTH 인증 시도 중
2022-11-16T13:43:02.000 INF AUTH 로그인 페이지 로드 중 LoginURL=https://example.com/login
2022-11-16T13:43:10.000 INF AUTH 다단계 인증 감지됨
2022-11-16T13:43:15.000 INF AUTH 사용자 제출이 성공적인지 확인 중 true_when="HTTP 상태 코드 < 400"
2022-11-16T13:43:15.000 INF AUTH 요구 사항 충족, 로그인 HTTP 메시지 감지되지 않음 want="HTTP 상태 코드 < 400"
2022-11-16T13:43:20.000 INF AUTH 로그인 시도가 성공적인지 확인 중 true_when="HTTP 상태 코드 < 400 and has authentication token and no login form found (no element found when searching using selector css:[id=email] or css:[id=password] or css:[id=submit])"
2022-11-24T14:43:20.000 INF AUTH 요구 사항 충족, HTTP 로그인 요청이 상태 코드 200을 반환했습니다 url=https://example.com/user/login?error=invalid%20credentials want="HTTP 상태 코드 < 400"
2022-11-16T13:43:21.000 INF AUTH 요구 사항 미충족, 로그인 양식을 찾을 수 없음 want="no login form found (no element found when searching using selector css:[id=email] or css:[id=password] or css:[id=submit])"
2022-11-16T13:43:21.000 INF AUTH 로그인 시도 실패 error="authentication failed: failed to authenticate user"
인증 보고서 구성
인증 보고서는 인증 실패의 원인을 이해하는 데 도움이 되도록 CI/CD 작업 아티팩트로 저장할 수 있습니다.
보고서에는 로그인 프로세스 중에 수행된 단계, HTTP 요청 및 응답, DOM(Document Object Model) 및 스크린샷이 포함됩니다.
인증 디버그 보고서가 내보내진 예제 구성은 다음과 같을 수 있습니다:
dast:
변수:
DAST_WEBSITE: "https://example.com"
DAST_AUTH_REPORT: "true"
아티팩트:
경로: [gl-dast-debug-auth-report.html]
when: always
알려진 문제
로그인 양식을 찾을 수 없음
DAST는 로그인 페이지를 로드할 때 로그인 양식을 찾지 못해 종종 실패합니다. 이를 fatal error로 보고하는 로그는 다음과 같습니다:
2022-12-07T12:44:02.838 INF AUTH 로그인 페이지 로드 중 LoginURL=[인증 URL]
2022-12-07T12:44:11.119 FTL MAIN 인증 실패: 로그인 양식을 찾을 수 없음
제안된 조치:
- 인증 보고서를 생성하여 HTTP 응답을 검사합니다.
- 대상 애플리케이션의 인증이 배포되어 실행 중인지 확인합니다.
-
DAST_AUTH_URL
이 올바른지 확인합니다. - GitLab Runner가
DAST_AUTH_URL
에 액세스할 수 있는지 확인합니다. - 사용된 경우
DAST_BROWSER_PATH_TO_LOGIN_FORM
이 유효한지 확인합니다.
스캔이 인증된 페이지를 크롤하지 않음
DAST가 인증 프로세스 중에 잘못된 인증 토큰을 캡처하면 스캔이 인증된 페이지를 크롤할 수 없습니다. 쿠키 이름 및 저장된 인증 토큰의 이름이 로그에 기록됩니다. 예를 들어,
2022-11-24T14:42:31.492 INF AUTH 인증 토큰 쿠키 이름=["sessionID"]
2022-11-24T14:42:31.492 INF AUTH 인증 토큰 저장 이벤트 키=["token"]
제안된 조치:
-
인증 보고서를 생성하고
로그인 제출
의 스크린샷을 확인하여 로그인이 예상대로 작동하는지 확인합니다. - 기록된 인증 토큰이 애플리케이션에서 사용하는 토큰인지 확인합니다.
- 쿠키를 사용하여 인증 토큰을 저장하는 경우
DAST_AUTH_COOKIES
를 사용하여 인증 토큰 쿠키의 이름을 설정합니다.
선택기로 요소를 찾을 수 없음
DAST는 사용자 이름, 비밀번호, 첫 번째 제출 버튼 또는 제출 버튼 요소를 찾을 수 없을 때 실패합니다. 이를 fatal error로 보고하는 로그는 다음과 같습니다:
2022-12-07T13:14:11.545 FTL MAIN 인증 실패: 선택기로 요소를 찾을 수 없음: css:#username
제안된 조치:
-
인증 보고서를 생성하여
로그인 페이지
의 스크린샷을 사용하여 페이지가 올바르게 로드되었는지 확인합니다. - 브라우저에서 로그인 페이지를 로드하고
DAST_USERNAME_FIELD
,DAST_PASSWORD_FIELD
,DAST_FIRST_SUBMIT_FIELD
,DAST_SUBMIT_FIELD
에 구성된 selectors가 올바른지 확인합니다.
사용자 인증에 실패함
DAST가 로그인 확인 체크에 실패하여 인증을 실패한 경우 입니다. 이를 fatal error로 보고하는 로그는 다음과 같습니다:
2022-12-07T06:39:49.483 INF AUTH 사용자 제출 확인 중 true_when="HTTP 상태 코드 < 400 and has authentication token and no login form found (no element found when searching using selector css:[name=username] or css:[name=password] or css:button[type=\"submit\"])"
2022-12-07T06:39:49.484 INF AUTH 요구 사항 충족, HTTP 로그인 요청이 상태 코드 303을 반환했습니다 url=http://auth-manual:8090/login want="HTTP 상태 코드 < 400"
2022-12-07T06:39:49.513 INF AUTH 요구 사항 미충족, 로그인 양식을 찾았습니다 want="no login form found (no element found when searching using selector css:[name=username] or css:[name=password] or css:button[type=\"submit\"])"
2022-12-07T06:39:49.589 INF AUTH 로그인 시도 실패 error="authentication failed: failed to authenticate user"
2022-12-07T06:39:53.626 FTL MAIN 사용자 인증 실패: 사용자 인증에 실패함
제안된 조치:
- 로그에서
요구 사항 미충족
을 찾습니다. 적절한 오류에 응답합니다.
요구 사항 미충족, 로그인 양식 발견
일반적으로 애플리케이션은 사용자가 로그인하면 대시보드를 표시하고, 사용자 이름 또는 비밀번호가 잘못된 경우 로그인 양식과 오류 메시지를 표시합니다.
이 오류는 DAST가 사용자를 인증한 후 표시된 페이지에서 로그인 양식을 감지할 때 발생하며, 이는 로그인 시도가 실패했음을 나타냅니다.
2022-12-07T06:39:49.513 INF AUTH requirement is unsatisfied, login form was found want="no login form found (no element found when searching using selector css:[name=username] or css:[name=password] or css:button[type=\"submit\"])"
제안하는 조치:
- 사용된 사용자 이름 및 비밀번호/인증 자격 증명이 올바른지 확인합니다.
-
인증 보고서를 생성하고
로그인 제출
에 대한요청
이 올바른지 확인합니다. - 웹소켓 또는 AJAX를 사용하여 로그인 양식을 제출할 때 발생하는 경우, 인증 보고서
로그인 제출
요청 및 응답이 비어 있는지 확인합니다. - 사용자 인증 후 표시된 페이지에 실제로 로그인 양식 선택기와 일치하는 요소가 있는 경우,
DAST_AUTH_VERIFICATION_URL
또는DAST_AUTH_VERIFICATION_SELECTOR
를 구성하여 로그인 시도를 확인하는 대체 방법을 사용하도록 구성하세요.
요구 사항 미충족, 선택기가 결과를 반환하지 않음
DAST는 사용자 로그인 후 표시된 페이지에서 DAST_AUTH_VERIFICATION_SELECTOR
에 제공된 선택기와 일치하는 요소를 찾을 수 없습니다.
2022-12-07T06:39:33.239 INF AUTH requirement is unsatisfied, searching DOM using selector returned no results want="has element css:[name=welcome]"
제안하는 조치:
-
인증 보고서를 생성하고
로그인 제출
에서의 스크린샷을 확인하여 예상한 페이지가 표시되는지 확인합니다. -
DAST_AUTH_VERIFICATION_SELECTOR
선택기가 올바른지 확인합니다.
요구 사항 미충족, 브라우저 URL이 아님
DAST는 사용자 로그인 후 표시된 페이지의 URL이 DAST_AUTH_VERIFICATION_URL
에 따라 기대한 것과 다름을 감지했습니다.
2022-12-07T11:28:00.241 INF AUTH requirement is unsatisfied, browser is not at URL browser_url="https://example.com/home" want="is at url https://example.com/user/dashboard"
제안하는 조치:
-
인증 보고서를 생성하고
로그인 제출
에서의 스크린샷을 확인하여 예상한 페이지가 표시되는지 확인합니다. -
DAST_AUTH_VERIFICATION_URL
이 올바른지 확인합니다.
요구 사항 미충족, HTTP 로그인 요청 상태 코드
로그인 양식을 로드하거나 양식을 제출할 때의 HTTP 응답이 400(클라이언트 오류) 또는 500(서버 오류) 상태 코드를 갖는 경우입니다.
2022-12-07T06:39:53.626 INF AUTH requirement is unsatisfied, HTTP login request returned status code 502 url="https://example.com/user/login" want="HTTP status code < 400"
- 사용된 사용자 이름 및 비밀번호/인증 자격 증명이 올바른지 확인합니다.
-
인증 보고서를 생성하고
로그인 제출
에 대한요청
이 올바른지 확인합니다. - 대상 애플리케이션이 예상대로 작동하는지 확인합니다.
요구 사항 미충족, 인증 토큰 없음
DAST가 인증 프로세스 중에 생성된 인증 토큰을 감지하지 못했습니다.
2022-12-07T11:25:29.010 INF AUTH authentication token cookies names=[]
2022-12-07T11:25:29.010 INF AUTH authentication token storage events keys=[]
2022-12-07T11:25:29.010 INF AUTH requirement is unsatisfied, no basic authentication, cookie or storage event authentication token detected want="has authentication token"
제안하는 조치:
-
인증 보고서를 생성하고
로그인 제출
에서의 스크린샷을 확인하여 로그인이 예상대로 작동하는지 확인합니다. - 브라우저의 개발 도구를 사용하여 로그인할 때 생성된 쿠키 및 로컬/세션 리포지터리 객체를 조사합니다. 충분히 무작위 값을 갖는 인증 토큰이 생성되었는지 확인하세요.
- 인증 토큰을 저장하기 위해 쿠키를 사용하는 경우
DAST_AUTH_COOKIES
를 사용하여 인증 토큰 쿠키의 이름을 설정하세요.