Cloudflare 작업자의 Firebase 인증
실제로 Javascript에서 사용할 수 있지만 Node에서 실행되도록 빌드되었습니다. 표준 웹 API를 사용하는 이 플랫폼을 지원하지 않는 일부 환경이 있습니다.
그 중 하나가 Cloudflare Workers입니다. 이러한 작업자에서 Node용 Admin SDK를 사용하려고 하면 누락된 라이브러리 때문에 작동하지 않습니다.
요점은 현재 개인 프로젝트에 사용할 필요가 절실하다는 것입니다. 이미 구현된 솔루션을 찾기 위해 인터넷 서핑을 시작했습니다.
그래서 나만의 도서관을 짓기로 했다.
flarebase-auth를 소개합니다
라이브러리 이름에서 알 수 있듯이 인증 부분만 다루고 있습니다.
저는 fetch() 및 WebCrypto와 같은 표준 웹 API를 사용했습니다. 내가 해야 했던 가장 일반적인 일은 JWT 토큰 생성/검증이었습니다. 저는 jose 라이브러리(프로젝트의 유일한 종속성)를 사용했는데, 이는 크로스 플랫폼이고 WebCrypto API와도 작동하기 때문입니다.
flarebase-auth
는 매우 간단하며 주로 google-oauth.ts
및 flarebase-auth.ts
의 두 파일로 작성됩니다.google-oauth.ts
Google OAuth 2.0 토큰의 유효성 검사 및 생성과 관련된 모든 코드는 이 파일에 기록됩니다. 거의 모든 요청이 인증되어야 하므로 이를 상당히 광범위하게 사용했습니다.
OAuth 2.0 토큰 생성은 2단계 프로세스입니다. 먼저 Google 서비스 계정 개인 키로 JWT 토큰에 서명합니다. 그런 다음 이 JWT를
https://oauth2.googleapis.com/token
에 전달하고 액세스 토큰을 검색합니다. 프로세스는 getAuthToken()
메서드로 구현됩니다.flarebase-auth.ts
이것은 실제 핵심 라이브러리가 있는 곳입니다. 목표는 Firebase Admin SDK에서 일반적으로
getAuth()
와 함께 사용하는 모든 방법을 구현하는 것입니다.지금은 기본 로그인/가입 시스템을 구축하는 데 충분하므로 다음 방법만 작성했습니다.
라이브러리 사용
어떻게 사용할 수 있습니까? 다음은 예제입니다. FlarebaseAuth 인스턴스를 생성하여 시작하겠습니다.
import { FlarebaseAuth } from 'flarebase-auth';
const auth = new FlarebaseAuth({
apiKey: 'Firebase api key',
projectId: 'Firebase project id',
privateKey: 'Firebase private key or service account private key',
serviceAccountEmail: 'Firebase service account email',
});
이제 실제 작업을 수행할 준비가 되었습니다! 예를 들어 이메일과 비밀번호로 사용자를 로그인하는 방법은 다음과 같습니다.
//Sign in with username and password
const { token, user } = await auth.signInWithEmailAndPassword(
'[email protected]',
'supersecurepassword'
);
const userEmail = user.email;
const refreshToken = token.refreshToken;
라이브러리는 더미 사용자와 더미 Firebase 프로젝트를 사용하여 테스트되었습니다. 나중에 저는 특히 디버깅 목적으로 만들어진 Firebase 인증 에뮬레이터가 있다는 것을 발견했습니다.
지금은 테스트 Firebase 프로젝트를 고수하고 다른 방법을 계속 구현하겠습니다. 이 기능을 추가하고 싶다면 풀 리퀘스트를 생성하는 것을 환영합니다!
flarebase-auth
는 캐싱도 지원합니다. CloudflareKv
를 사용하여 만료될 때까지 OAuth 2.0 토큰을 자동으로 저장할 수 있습니다.import { FlarebaseAuth, CloudflareKv } from 'flarebase-auth';
const auth = new FlarebaseAuth({
apiKey: 'Firebase api key',
projectId: 'Firebase project id',
privateKey: 'Firebase private key or service account private key',
serviceAccountEmail: 'Firebase service account email',
cache: new CloudflareKv(NAMESPACE);
});
flarebase-auth의 다음 단계
현재 프로젝트에 이 라이브러리를 성공적으로 사용하고 있지만 아직 구현해야 할 개선 사항과 새로운 기능이 많이 있습니다. 추가하고 싶은 목록은 다음과 같습니다.
연결
flarebase-auth
는 NPM 및 GitHub Packages에서 사용할 수 있습니다. 이 프로젝트는 완전히 오픈 소스이며 MIT 라이센스가 있으므로 원하는 대로 하세요! 기여를 환영합니다 🥳Reference
이 문제에 관하여(Cloudflare 작업자의 Firebase 인증), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/marplex/firebase-authentication-on-cloudflare-workers-24o3텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)