문제 해결
로그는 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 및 인증 토큰이 있으며 로그인 양식이 없음 (선택기를 사용하여 검색할 때 요소를 찾을 수 없음 css:[id=email] 또는 css:[id=password] 또는 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="로그인 양식이 없음 (선택기를 사용하여 검색할 때 요소를 찾을 수 없음 css:[id=email] 또는 css:[id=password] 또는 css:[id=submit])"
2022-11-16T13:43:21.000 INF AUTH 로그인 시도 실패 오류="인증 실패: 사용자 인증 실패"
인증 보고서 구성
인증 보고서는 CI/CD 작업 아티팩트로 저장되어 인증 실패의 원인을 이해하는 데 도움이 될 수 있습니다.
보고서에는 로그인 프로세스 중 수행된 단계, HTTP 요청 및 응답, 문서 객체 모델(DOM) 및 스크린샷이 포함됩니다.
인증 디버그 보고서를 내보내는 예제 구성은 다음과 유사할 수 있습니다:
dast:
variables:
DAST_WEBSITE: "https://example.com"
DAST_AUTH_REPORT: "true"
artifacts:
paths: [gl-dast-debug-auth-report.html]
when: always
알려진 문제
로그인 양식이 발견되지 않음
DAST는 로그인 페이지를 로드할 때 로그인 양식을 찾지 못했습니다. 이는 인증 URL을 로드할 수 없기 때문인 경우가 많습니다.
로그에서는 다음과 같은 치명적인 오류를 보고합니다:
2022-12-07T12:44:02.838 INF AUTH 로그인 페이지 로드 중 LoginURL=[authentication URL]
2022-12-07T12:44:11.119 FTL MAIN 인증 실패: 로그인 양식이 발견되지 않음
제안된 작업:
- 인증 보고서 생성을 통해 HTTP 응답을 검사하세요.
- 대상 애플리케이션 인증이 배포되고 실행 중인지 확인하세요.
-
DAST_AUTH_URL
이 올바른지 확인하세요. - GitLab Runner가
DAST_AUTH_URL
에 접근할 수 있는지 확인하세요. - 사용하는 경우
DAST_AUTH_BEFORE_LOGIN_ACTIONS
가 유효한지 확인하세요.
스캔이 인증된 페이지를 크롤링하지 않음
DAST가 인증 과정 중 잘못된 인증 토큰을 캡처하면 스캔이 인증된 페이지를 크롤링할 수 없습니다. 쿠키 이름과 스토리지 인증 토큰은 로그에 기록됩니다. 예를 들어:
2022-11-24T14:42:31.492 INF AUTH 인증 토큰 쿠키 이름=["sessionID"]
2022-11-24T14:42:31.492 INF AUTH 인증 토큰 스토리지 이벤트 키=["token"]
제안된 조치:
-
인증 보고서를 생성하고
로그인 제출
의 스크린샷을 확인하여 로그인 작동을 확인하세요. -
기록된 인증 토큰이 애플리케이션에서 사용하는 것인지 확인하세요.
-
인증 토큰을 저장하기 위해 쿠키를 사용하는 경우,
DAST_AUTH_COOKIE_NAMES
를 사용하여 인증 토큰 쿠키의 이름을 설정하세요.
선택기로 요소를 찾을 수 없음
DAST가 사용자 이름, 비밀번호, 첫 제출 버튼 또는 제출 버튼 요소를 찾지 못했습니다. 로그에 치명적인 오류가 보고됩니다:
2022-12-07T13:14:11.545 FTL MAIN 인증 실패: 선택기로 요소를 찾을 수 없음: css:#username
제안된 조치:
-
인증 보고서를 생성하여
로그인 페이지
의 스크린샷을 사용해 페이지가 올바르게 로드되었는지 확인하세요. -
브라우저에서 로그인 페이지를 로드하고
DAST_AUTH_USERNAME_FIELD
,DAST_AUTH_PASSWORD_FIELD
,DAST_AUTH_FIRST_SUBMIT_FIELD
,DAST_AUTH_SUBMIT_FIELD
에 구성된 선택기가 올바른지 확인하세요.
사용자 인증 실패
DAST가 로그인 검증 체크 실패로 인해 인증에 실패했습니다. 로그에 치명적인 오류가 보고됩니다:
2022-12-07T06:39:49.483 INF AUTH 로그인 시도가 성공적이었는지 확인 true_when="HTTP 상태 코드 < 400 및 인증 토큰이 있고 로그인 양식이 발견되지 않음 (selector css:[name=username] 또는 css:[name=password] 또는 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="로그인 양식이 발견되지 않음 (selector css:[name=username] 또는 css:[name=password] 또는 css:button[type=\"submit\"]을 사용하여 검색할 때 요소를 발견하지 못함)"
2022-12-07T06:39:49.589 INF AUTH 로그인 시도 실패 오류="인증 실패: 사용자 인증에 실패함"
2022-12-07T06:39:53.626 FTL MAIN 인증 실패: 사용자 인증에 실패함
제안된 조치:
- 로그에서
요구 사항이 충족되지 않음
을 찾아 적절한 오류에 응답하세요.
요구 사항이 충족되지 않음, 로그인 양식이 발견됨
응용 프로그램은 일반적으로 사용자가 로그인할 때 대시보드를 표시하고 사용자 이름 또는 비밀번호가 잘못된 경우 오류 메시지와 함께 로그인 양식을 표시합니다.
이 오류는 DAST가 사용자를 인증한 후 표시된 페이지에서 로그인 양식을 감지할 때 발생하며 로그인 시도가 실패했음을 나타냅니다.
2022-12-07T06:39:49.513 INF AUTH 요구 사항이 충족되지 않음, 로그인 양식이 발견됨 want="로그인 양식이 발견되지 않음 (selector css:[name=username] 또는 css:[name=password] 또는 css:button[type=\"submit\"]을 사용하여 검색할 때 요소를 발견하지 못함)"
제안된 조치:
-
사용한 사용자 이름 및 비밀번호/인증 자격 증명이 올바른지 확인하세요.
-
인증 보고서를 생성하고
로그인 제출
에 대한요청
이 올바른지 확인하세요. -
인증 보고서의
로그인 제출
요청 및 응답이 비어있을 수 있습니다. 이는 HTML 양식을 제출할 때 전체 페이지 새로 고침을 초래하는 요청이 없을 때 발생합니다. 이는 웹소켓 또는 AJAX를 사용하여 로그인 양식을 제출할 때 발생합니다. -
사용자의 인증 후 표시된 페이지에 실제로 로그인 양식 선택자와 일치하는 요소가 있는 경우,
DAST_AUTH_SUCCESS_IF_AT_URL
또는DAST_AUTH_SUCCESS_IF_ELEMENT_FOUND
를 구성하여 로그인 시도를 검증하는 대체 방법을 사용하세요. -
일부 응용 프로그램은 로그인 양식이 숨겨지기 전에 페이지에 “로딩 중…” 요소를 표시합니다. 이는 분석기를 혼란스럽게 할 수 있습니다. 페이지 로드가 완료되었음을 분석기에 지시하려면
DAST_PAGE_IS_LOADING_ELEMENT
또는DAST_PAGE_IS_READY_ELEMENT
변수를 사용하세요.
요구 사항 불만족, 선택자가 결과를 반환하지 않음
DAST는 사용자 로그인을 한 후 표시된 페이지에서 DAST_AUTH_SUCCESS_IF_ELEMENT_FOUND
에 제공된 선택자와 일치하는 요소를 찾을 수 없습니다.
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_SUCCESS_IF_ELEMENT_FOUND
선택자가 올바른지 확인하세요.
요구 사항 불만족, 브라우저의 URL이 아님
DAST는 사용자 로그인을 한 후 표시된 페이지의 URL이 DAST_AUTH_SUCCESS_IF_AT_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_SUCCESS_IF_AT_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_COOKIE_NAMES
를 사용하여 인증 토큰 쿠키의 이름을 설정하세요.