문제 해결

Tier: Ultimate Offering: GitLab.com, Self-managed, GitLab Dedicated

로그는 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  로그인 시도 실패 오류="인증 실패: 사용자 인증 실패"

인증 보고서 구성

caution
인증 보고서는 로그인 수행에 사용된 자격 증명과 같은 민감한 정보를 포함할 수 있습니다.

인증 보고서는 CI/CD 작업 아티팩트로 저장되어 인증 실패의 원인을 이해하는 데 도움이 될 수 있습니다.

보고서에는 로그인 프로세스 중 수행된 단계, HTTP 요청 및 응답, 문서 객체 모델(DOM) 및 스크린샷이 포함됩니다.

dast-auth-report

인증 디버그 보고서를 내보내는 예제 구성은 다음과 유사할 수 있습니다:

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를 사용하여 인증 토큰 쿠키의 이름을 설정하세요.