sourcetip

Firebase 클라우드 함수 "클라이언트에 이 서버에서 URL/200을 가져올 권한이 없습니다."

fileupload 2023. 6. 22. 22:08
반응형

Firebase 클라우드 함수 "클라이언트에 이 서버에서 URL/200을 가져올 권한이 없습니다."

방금 파이어베이스 클라우드 기능을 만들었습니다.

exports.deleteAfterSevenDays = functions.https.onRequest((req, res) => {...

나는 그 기능을 배포했고 기능 URL을 받았습니다.브라우저에서 이 URL을 요청하면 다음 메시지가 표시됩니다.

"오류: 금지됨 클라이언트에 이 서버에서 URL/200을 가져올 권한이 없습니다."

스파크 계획에 한계가 있는 줄 알고 방금 파이어베이스 블레이즈 계획으로 업데이트했는데, 아직도 작동하지 않습니다.

내 파이어베이스 클라우드 함수 로그에는 "함수 실행에 572ms, 상태 코드: 302로 완료됨"이라고 기록되어 있습니다.

내 cron 작업이 "실패한 실행이 너무 많아 자동으로 비활성화되었습니다."

뭐가 잘못됐는지 알겠어요?

클라우드 기능은 "모든 사용자"라는 구성원을 가진 역할이 있어야 권한에 관계없이 어디서나/누구나 이 기능을 호출할 수 있습니다.

승인 없음:

  1. 클라우드 기능 탭으로 이동
  2. 클라우드 기능 선택(확인란)
  3. 오른쪽의 [권한] 탭에서 "구성원 추가"를 누릅니다.
  4. 새 구성원 아래에 "모든 사용자"를 입력합니다.
  5. 역할을 "클라우드 기능 -> 클라우드 기능 호출기"로 선택
  6. 절약하다
  7. 브라우저에 붙여넣기만 하면 클라우드 기능 테스트

인증 포함:

클라우드 기능에 대한 인증을 설정하는 것은 항상 좋은 방법입니다.

참고: "403 Forbidden - 귀하의 클라이언트는 URL을 가져올 권한이 없습니다."라는 오류를 발생시키는 클라우드 함수는 인증된 사용자가 호출해야 합니다.

간단한 테스트:

  1. 페이지 상단에서 클라우드 셸(아이콘) 터미널 클릭

  2. 유형:gcloud auth print-identity-token

  3. 생성된 토큰 복사

  4. 클라우드 함수를 호출하는 동안 전달할 권한 부여 키를 형성하는 중

    4.1 Authorization: bearer generated_token

  5. 클라우드 기능을 호출하는 동안 위의 인증 키 사용

참고:

  1. 모든 사용자가 클라우드 기능을 사용할 수 있도록 하지 않음

Cloud Function 문서에서:

주의:버전 7.7.0보다 낮은 Firebase CLI로 배포된 새로운 HTTP 및 HTTP 호출 가능 함수는 기본적으로 비공개이며 호출 시 HTTP 403 오류가 발생합니다.이러한 기능을 명시적으로 공개하거나 새 기능을 배포하기 전에 Firebase CLI를 업데이트합니다.

저의 경우 CLI 버전이 최신 버전이 아닙니다.현재 403 오류가 발생하는 경우 다음을 시도합니다.

  1. 클라우드 기능 삭제
  2. CLI Firebase CLI npm install -g firebase-tools
  3. 기능을 다시 배포합니다.

분명히 해야 할 일:

  1. 작업으로 이동합니다(프로젝트가 선택되었는지 확인).

https://console.cloud.google.com/functions/details/us-central1/ssr

  1. 사용 권한 탭 클릭
  2. 사용 권한 추가 클릭
  3. 새 교장: allUsers
    역할: Cloud Functions Invoker

다 했어요.

J

대상 클라우드 기능에 대한 IAM 역할(클라우드 기능 호출기)을 모든 사용자로 변경하면 이 문제가 해결됩니다.https://console.cloud.google.com/functions

2020년에 이러한 문제가 발생할 경우 다른 액세스 동작 때문일 수도 있습니다.

참고: 2020년 1월 15일 기준으로 HTTP 기능은 기본적으로 인증이 필요합니다.배포 시 또는 배포 후에 인증되지 않은 호출을 허용할지 여부를 지정할 수 있습니다.

https://cloud.google.com/functions/docs/securing/managing-access-iam#allowing_unauthenticated_function_invocation

단계는 다음과 같습니다.

  • Google Cloud Console(Firebase Console 아님)으로 이동 -> Search For Cloud Functions에서 기능 목록 확인
  • 액세스 권한을 부여할 기능 옆에 있는 확인란을 클릭합니다.
  • 화면 맨 위에 있는 사용 권한을 클릭합니다.권한 패널이 열립니다.
  • 주체 추가를 클릭합니다.
  • 새 주체 필드에 allUsers를 입력합니다.
  • 에서 Cloud Functions > Cloud Functions Invoker 역할을 선택합니다.
  • 역할 드롭다운 메뉴를 선택합니다.
  • 저장을 클릭합니다.

포스트맨 프로젝트에서 액세스 사용:

  1. https://console.cloud.google.com/functions 열기
  2. 클라우드 셸 열기(오른쪽 상단 터미널 아이콘)
  3. 쓰기:gcloud auth print-identity-token
  4. 토큰을 복사하고 Posman을 엽니다.
  5. 컬렉션을 마우스 오른쪽 버튼으로 클릭 -> 편집
  6. 선택 -> 유형 선택OAuth 2.0
  7. 액세스 토큰에 토큰 붙여넣기

참고: 단일 요청 또는 폴더에 대해서도 동일한 작업을 수행할 수 있습니다.

이는 잘못된 것일 수 있지만 클라우드 기능 배포를 중단한 경우 해당 기능을 다시 배포하고(오류가 발생함), 해당 기능을 성공적으로 배포한 후 문제가 발생했을 수 있습니다.

재생산을 시도하고 있지만, 파이어베이스 콘솔에서 기능을 삭제하고 다시 배포하는 것만으로도 효과가 있었습니다.

모든 NPM 패키지를 업그레이드하고 배포한 후에 발생합니다.클라우드에서 모든 기능을 삭제하고 다시 배포했습니다.이 오류를 즉시 해결해 줍니다.변경 허가 또는 기타 변경 없이

  1. 클라우드 기능 탭으로 이동
  2. 기능의 오른쪽에 있는 점을 클릭합니다.
  3. "클라우드 실행 서비스로 이동" 클릭 2
  4. 클라우드 실행 시 보안 탭 클릭
  5. 인증 카드에서 "인증되지 않은 호출 허용"을 선택합니다. 3

Google Cloud Console에서 위의 모든 권한을 사용해 본 사람이 있을 경우...

제 시나리오에서는 매우 오래된 함수(예: 몇 년 된 함수)를 동일한 함수 이름의 새 함수로 바꾸려고 했습니다.기능을 몇 번 다시 배포하려고 했지만 아무 것도 작동하지 않았습니다.

Google 클라우드 콘솔에서 수동으로 해당 기능을 삭제한 후 다시 배포해야 했습니다.이로 인해 문제가 해결되었고 거미줄이 날아가 오작동을 일으켰을 가능성이 높습니다.

이것이 누군가에게 도움이 되기를 바랍니다.

저는 이것이 말이 안되거나 진정한 해결책이 아니라는 것을 알지만 저는 제 계정을 만듦으로써 그것을 해결했습니다.Owner파이어베이스 프로젝트의.제가 있는 동안 잘 작동했습니다.Editor하지만 갑자기 일을 멈추고 내 계정을 다음과 같이 설정합니다.Owner일단 해결했습니다.

특정 계정이 적절한 액세스 권한을 갖는 것과 관련이 있다고 생각합니다.Service AccountFirebase Functions 및 Google Cloud API를 사용하는 실제 인터페이스입니다.

저의 경우, 제가 요청 본문을 입력할 때 우체부에서 오류를 범했습니다. 저는 텍스트 형식에서 JSON 형식으로 전환하지 않았습니다.

그 부분을 확인해 보세요.

페이지에 따르면: https://firebase.google.com/docs/functions/http-events

주의:버전 7.7.0보다 낮은 Firebase CLI로 배포된 새로운 HTTP 및 HTTP 호출 가능 함수는 기본적으로 비공개이며 호출 시 HTTP 403 오류가 발생합니다.새 기능을 배포하기 전에 이러한 기능을 명시적으로 공개하거나 Firebase CLI를 업데이트합니다.

기본적으로 이전 버전의 CLI를 사용하는 경우에만 사용 권한을 생성하면 됩니다.private7.7.0보다 새로운 버전을 사용하는 것은 발생하지 않아야 합니다.

이 경우 실행npm install -g firebase-tools최신 CLI를 얻으려면 Firebase 콘솔로 이동하여 기존 기능을 모두 삭제하고 다시 배포하십시오.

이 경우 구글 클라우드 콘솔에서 아무것도 할 필요가 없습니다.

언급URL : https://stackoverflow.com/questions/47511677/firebase-cloud-function-your-client-does-not-have-permission-to-get-url-200-fr

반응형