문제 해결

상세 정보: 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  로그인 시도 실패 error="인증 실패: 사용자 인증 실패"

인증 보고서 구성

경고: 인증 보고서에는 로그인을 수행하는 데 사용된 자격 증명과 같은 민감한 정보가 포함될 수 있습니다.

인증 보고서는 인증 실패의 원인을 이해하는 데 도움이 되도록 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=[인증 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가 사용자 이름, 비밀번호, 첫 번째 제출 버튼 또는 제출 버튼 요소를 찾지 못했습니다. 로그에는 다음과 같은 치명적인 오류가 보고됩니다.

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\"])"

제안하는 조치:

  • 사용된 사용자 이름 및 비밀번호/인증 자격 증명이 올바른지 확인합니다.
  • 인증 보고서를 생성하고 로그인 제출요청이 올바른지 확인합니다.
  • 사용자 인증 보고서 로그인 제출 요청 및 응답이 비어 있는 경우, 즉 HTML 폼을 제출할 때 만들어진 요청과 같은 요청이 없을 때 발생합니다. 이는 웹소켓이나 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  요구 사항이 미황졸입니다. 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를 사용하여 인증 토큰 쿠키의 이름을 설정하세요.