문제 해결
로그는 DAST가 인증 프로세스 중에 무엇을 수행하고 기대하는지에 대한 통찰을 제공합니다. 더 자세한 정보는 인증 보고서를 구성합니다.
특정 오류 메시지 또는 상황에 대한 자세한 내용은 알려진 문제를 참조하세요.
브라우저 기반 분석기는 사용자를 인증하는 데 사용됩니다. 고급 문제 해결에 대해서는 브라우저 기반 문제 해결을 참조하세요.
로그 읽기
DAST CI/CD 작업의 콘솔 출력은 AUTH
로그 모듈을 사용하여 인증 프로세스에 대한 정보를 보여줍니다.
예를 들어, 다음 로그는 다단계 로그인 양식에 대한 인증 실패를 보여줍니다.
로그인 이후에 홈페이지가 표시되어야 하는데, 대신 로그인 양식이 여전히 있는 상태로, 인증이 실패했습니다.
2022-11-16T13:43:02.000 INF AUTH attempting to authenticate
2022-11-16T13:43:02.000 INF AUTH loading login page LoginURL=https://example.com/login
2022-11-16T13:43:10.000 INF AUTH multi-step authentication detected
2022-11-16T13:43:15.000 INF AUTH verifying if user submit was successful true_when="HTTP status code < 400"
2022-11-16T13:43:15.000 INF AUTH requirement is satisfied, no login HTTP message detected want="HTTP status code < 400"
2022-11-16T13:43:20.000 INF AUTH verifying if login attempt was successful true_when="HTTP status code < 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 requirement is satisfied, HTTP login request returned status code 200 url=https://example.com/user/login?error=invalid%20credentials want="HTTP status code < 400"
2022-11-16T13:43:21.000 INF AUTH requirement is unsatisfied, login form was found 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 login attempt failed error="authentication failed: failed to authenticate user"
인증 보고서 구성
인증 보고서는 인증 실패의 원인을 이해하는 데 도움이 되도록 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가 로그인 페이지를 로드할 때 로그인 양식을 찾지 못하여 종종 실패합니다. 로그는 다음과 같은 심각한 오류를 보고합니다:
2022-12-07T12:44:02.838 INF AUTH loading login page LoginURL=[authentication URL]
2022-12-07T12:44:11.119 FTL MAIN authentication failed: login form not found
권장 조치:
- 인증 보고서를 생성하여 HTTP 응답을 검사합니다.
- 대상 애플리케이션의 인증이 배포되어 실행 중인지 확인합니다.
-
DAST_AUTH_URL
이 올바른지 확인합니다. - GitLab Runner가
DAST_AUTH_URL
에 액세스할 수 있는지 확인합니다. - 사용 중이라면
DAST_BROWSER_PATH_TO_LOGIN_FORM
이 유효한지 확인합니다.
스캔이 인증된 페이지를 크롤하지 않음
DAST가 인증 프로세스 중에 잘못된 인증 토큰을 캡처하면 스캔이 인증된 페이지를 크롤할 수 없습니다. 쿠키 및 저장 인증 토큰의 이름이 로그에 기록됩니다. 예를 들면:
2022-11-24T14:42:31.492 INF AUTH authentication token cookies names=["sessionID"]
2022-11-24T14:42:31.492 INF AUTH authentication token storage events keys=["token"]
권장 조치:
-
인증 보고서를 생성하고
Login submit
의 스크린샷을 확인하여 로그인이 예상대로 작동하는지 확인합니다. - 기록된 인증 토큰이 애플리케이션에서 사용하는 토큰인지 확인합니다.
- 쿠키를 사용하여 인증 토큰을 저장하는 경우,
DAST_AUTH_COOKIES
를 사용하여 인증 토큰 쿠키의 이름을 설정합니다.
셀렉터로 요소를 찾을 수 없음
DAST가 사용자 이름, 비밀번호, 첫 번째 제출 버튼 또는 제출 버튼 요소를 찾지 못했습니다. 로그는 다음과 같은 심각한 오류를 보고합니다:
2022-12-07T13:14:11.545 FTL MAIN authentication failed: unable to find elements with selector: css:#username
권장 조치:
-
인증 보고서를 생성하여
로그인 페이지
의 스크린샷을 사용하여 페이지가 올바르게 로드되었는지 확인합니다. - 브라우저에서 로그인 페이지를로드하고
DAST_USERNAME_FIELD
,DAST_PASSWORD_FIELD
,DAST_FIRST_SUBMIT_FIELD
,DAST_SUBMIT_FIELD
에서 구성된 셀렉터가 올바른지 확인합니다.
사용자 인증 실패
DAST가 실패한 로그인 확인 검사로 인해 인증에 실패했습니다. 로그는 다음과 같은 심각한 오류를 보고합니다:
2022-12-07T06:39:49.483 INF AUTH verifying if login attempt was successful true_when="HTTP status code < 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 requirement is satisfied, HTTP login request returned status code 303 url=http://auth-manual:8090/login want="HTTP status code < 400"
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\"])"
2022-12-07T06:39:49.589 INF AUTH login attempt failed error="authentication failed: failed to authenticate user"
2022-12-07T06:39:53.626 FTL MAIN authentication failed: failed to authenticate user
권장 조치:
-
requirement is unsatisfied
에 대한 로그를 확인합니다. 적절한 오류에 대해 응답합니다.
요구 사항이 충족되지 않았으며 로그인 양식이 찾아짐
일반적으로 사용자가 로그인하고 로그인이 올바르지 않은 경우에는 대시 보드가 표시되고, 사용자 이름 또는 비밀번호가 올바르지 않을 때는 로그인 양식과 함께 오류 메시지가 표시됩니다.
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\"])"
권장 조치:
- 사용된 사용자 이름 및 비밀번호/인증 자격 증명이 올바른지 확인합니다.
-
인증 보고서를 생성하고
Login submit
의Request
를 확인합니다. - 사용자 인증 후에 표시되는 페이지에 로그인 양식 셀렉터와 일치하는 요소가 실제로 존재하는 경우,
DAST_AUTH_VERIFICATION_URL
또는DAST_AUTH_VERIFICATION_SELECTOR
를 구성하여 로그인 시도를 확인하는 대체 방법을 사용합니다. - 일부 애플리케이션은 로그인 양식을 숨기기 전에 페이지에서 “로드 중…” 요소를 표시합니다. 이는 분석기를 혼란스럽게 할 수 있습니다. 페이지가 로드가 완료되었음을 분석기에 알려주기 위해
DAST_BROWSER_PAGE_LOADING_SELECTOR
또는DAST_BROWSER_PAGE_READY_SELECTOR
변수를 사용합니다.
요구 사항 불만족, 셀렉터가 결과를 반환하지 않음
DAST는 사용자 로그인 후 표시된 페이지에서 DAST_AUTH_VERIFICATION_SELECTOR
에 제공된 셀렉터와 일치하는 요소를 찾을 수 없습니다.
2022-12-07T06:39:33.239 INF AUTH 요구 사항이 불만족이며, 셀렉터를 사용하여 DOM을 검색한 결과가 없습니다: 원하는 것="요소가 있음 css:[name=welcome]"
제안된 조치:
-
인증 보고서를 생성하고
로그인 제출
에서 스크린샷을 확인하여 예상했던 페이지가 표시되는지 확인합니다. -
DAST_AUTH_VERIFICATION_SELECTOR
셀렉터가 올바른지 확인하세요.
요구 사항 불만족, 브라우저가 URL에 있지 않음
DAST가 사용자 로그인 후 표시된 페이지의 URL이 DAST_AUTH_VERIFICATION_URL
에 따라 예상과 다른 것을 감지했습니다.
2022-12-07T11:28:00.241 INF AUTH 요구 사항이 불만족이며, 브라우저가 URL에 있지 않습니다: 브라우저 URL="https://example.com/home" 원하는 것="url이 https://example.com/user/dashboard에 있음"
제안된 조치:
-
인증 보고서를 생성하고
로그인 제출
에서 스크린샷을 확인하여 예상했던 페이지가 표시되는지 확인합니다. -
DAST_AUTH_VERIFICATION_URL
이 올바른지 확인하세요.
요구 사항 불만족, HTTP 로그인 요청 상태 코드
로그인 양식을로드하거나 제출할 때의 HTTP 응답이 상태 코드 400 (클라이언트 오류) 또는 500 (서버 오류)를 갖고 있었습니다.
2022-12-07T06:39:53.626 INF AUTH 요구 사항이 불만족이며, HTTP 로그인 요청이 상태 코드 502를 반환했습니다: URL="https://example.com/user/login" 원하는 것="HTTP 상태 코드 < 400"
- 사용된 사용자 이름 및 비밀번호/인증 자격 증명이 올바른지 확인하세요.
-
로그인 제출
에 대한요청
이 올바른지 인증 보고서를 생성하세요. - 대상 응용 프로그램이 예상대로 작동하는지 확인하세요.
요구 사항 불만족, 인증 토큰 없음
DAST는 인증 프로세스 중에 생성된 인증 토큰을 감지하지 못했습니다.
2022-12-07T11:25:29.010 INF AUTH 인증 토큰 쿠키 이름=[]
2022-12-07T11:25:29.010 INF AUTH 인증 토큰 저장 이벤트 키=[]
2022-12-07T11:25:29.010 INF AUTH 요구 사항이 불만족이며, 기본 인증, 쿠키 또는 저장 이벤트 인증 토큰이 감지되지 않았습니다: 원하는 것="인증 토큰이 있음"
제안된 조치:
-
인증 보고서를 생성하고
로그인 제출
에서 스크린샷을 확인하여 로그인이 예상대로 작동하는지 확인하세요. - 브라우저의 개발 도구를 사용하여 로그인하는 동안 생성된 쿠키 및 로컬/세션 스토리지 객체를 조사하세요. 충분히 무작위 값으로 생성된 인증 토큰이 있는지 확인하세요.
- 인증 토큰을 저장하는 데 쿠키를 사용하는 경우,
DAST_AUTH_COOKIES
를 사용하여 인증 토큰 쿠키의 이름을 설정하세요.