Google Identity Toolkit에서 Firebase 인증으로 이전

Google Identity 툴킷의 최신 버전이 Firebase 인증 앞으로 Identity Toolkit의 기능 작업이 동결되고 모든 신규 기능 개발은 Firebase 인증에서 이루어집니다. Google에서는 가능한 한 빨리 Identity Toolkit 개발자들이 Firebase 인증으로 전환하도록 조치 실용적이어야 합니다. Identity Toolkit은 추가 공지 없이 지원 중단되지 않을 예정입니다.

새로운 기능

Firebase 인증에는 이미 다음과 같은 몇 가지 중요한 기능이 향상되었습니다. Google ID 도구:

  • 모든 Firebase에 액세스

    Firebase는 고품질의 애플리케이션을 신속하게 개발할 수 있는 모바일 플랫폼입니다. 사용자층을 확대하고, 더 많은 수익을 창출하세요. Firebase는 필요에 맞게 조합하여 사용할 수 있는 보완 기능을 다음을 위한 인프라 포함: 모바일 애널리틱스 클라우드 메시징 실시간 데이터베이스 파일 저장소, 정적 호스팅, 원격 구성, 모바일 비정상 종료 보고 및 Android 테스트.

  • 업데이트된 UI

    Google의 최신 UX를 기반으로 UI 흐름을 완전히 다시 구축했습니다. 연구 여기에는 비밀번호 복구, 계정 연결, 신규/기존이 포함됩니다. 코드 및 입력에 상당한 시간이 걸리는 계정 명확성 흐름을 디버그. 비밀번호 대용 Smart Lock을 통합합니다. Android에서 앱 로그인 및 가입 전환이 크게 개선되었습니다. (참여 에 제공됨) 또한 애플리케이션에 맞게 쉽게 테마를 수정할 수 있습니다. AndroidiOS 버전이 오픈소스로 제공되었습니다.

  • 간소화된 서버 설정

    개발자가 Firebase 인증을 더 쉽게 사용할 수 있습니다. 다음으로 바꿉니다. 많은 개발자들이 이메일 복구 플로우로 인해 사용자가 이메일을 계정을 보호할 수 있습니다. Firebase 인증은 이메일 확인, 비밀번호 재설정 및 비밀번호 변경 메일을 에 보내기 사용자와 텍스트를 쉽게 맞춤설정할 수 있음 사용자를 위해 설계되었습니다 또한 더 이상 리디렉션 호스팅용 UI 위젯 비밀번호 변경 작업 완료

  • 새 관리 콘솔

    Firebase에 새로운 개발자 콘솔이 도입되었습니다. Authentication 섹션에서는 있습니다. 이는 로그인 및 가입 흐름을 디버깅하는 데 큰 도움이 될 수 있습니다. 또한 콘솔을 사용하면 인증 방법 및 이메일 템플릿을 맞춤설정할 수 있습니다.

  • 새 SDK

    이제 Identity Toolkit의 모든 서버 API가 각각 클라이언트 라이브러리 (Android, iOS, 웹)를 지원합니다. 개발자는 라이선스 서명, 기존 사용자와 신규 사용자를 로그인 및 등록하고, 사용자 속성에 액세스하고, 계정 삭제, 비밀번호 재설정 등을 할 수 있습니다. 원하는 경우 전체 로그인 과정을 수동으로 빌드하고 이 API를 기반으로 빌드되었습니다.

  • 모바일 앱용 세션 관리

    Identity Toolkit을 통해 앱은 초기 인증 이벤트를 수신합니다. Firebase 인증은 인증에서 발급된 갱신 토큰을 받는 백엔드 서비스 이벤트를 통해 Android, iOS 및 있습니다. 사용자가 비밀번호를 변경할 때 갱신 토큰은 새 액세스 토큰을 더 오래 생성할 수 있으므로 사용자가 해당 기기에서 다시 인증합니다.

  • 익명 및 GitHub 인증

    Firebase 인증은 2가지 새로운 인증 유형인 GitHub 및 익명입니다. 익명 로그인을 사용하면 사용자에게 로그인 또는 가입 절차를 거쳐야 합니다. 이제 인증된 API를 호출할 수 있습니다. 일반 사용자와 소통할 수 있습니다. 사용자가 계정에 가입하기로 결정하면 활동이 동일한 사용자 ID로 보존됩니다. 이 방법은 상황에 따라 사용자의 참여를 유도하고자 하는 애플리케이션이나 서버측 장바구니 등 가입 절차를 통해 보내기 전에 사용자에게 제공할 수 있습니다.

기능 차이

현재 Firebase에서 일부 Identity Toolkit 기능을 사용할 수 없습니다. 인증을 사용하는 반면, 다른 기능은 새롭게 디자인되고 작동 방식이 다릅니다. 이러한 기능이 중요한 비즈니스라면 있습니다. 대부분의 경우 이러한 기능은 앱에 중요하지 않거나 이전을 진행하는 데 도움이 되는 쉬운 대체 방법이 있을 수 있습니다.

서버 측 차이점

기본 REST API가 포함된 핵심 Identity Toolkit 서비스인 유효성 검사 로직과 기본 사용자 데이터베이스가 소규모 업데이트만 받음 하지만 Firebase 인증을 통합하는 일부 기능과 방법은 알 수 있습니다

  • ID 공급업체

    PayPal 및 AOL은 지원되지 않습니다. 사용자 이 IDP의 계정은 여전히 계정에 비밀번호를 설정할 수 있습니다.

  • 서버 라이브러리

    현재 Firebase Admin SDK가 있습니다 Java, Node.js, Python, Go 및 C#에서 사용할 수 있습니다.

  • 계정 관리 이메일

    비밀번호 재설정, 이메일 확인 및 이메일 변경 메시지는 Firebase 또는 개발자의 액세스할 수 있습니다 현재 Firebase 이메일 템플릿은 제한된 수만 맞춤설정할 수 있습니다.

  • 이메일 주소 변경 확인

    Identity Toolkit에서는 사용자가 이메일 주소를 변경하기로 결정하면 이메일을 계속 보낼 수 있는 링크가 있는 새 주소로 이메일을 보냅니다. 주소 변경 흐름에 따라 달라집니다.

    Firebase는 취소 이메일을 전송하여 이메일 주소 변경을 확인합니다. 변경사항을 되돌리는 링크가 있는 기존 이메일 주소를 삭제합니다.

  • IDP 출시

    Identity Toolkit에서 ID 공급업체를 로그인에 추가할 수 있었습니다. 점차적으로 운영하여 캠페인 실적에 미치는 영향을 실험해 볼 수 있습니다. 이 기능은 Firebase 인증에서 삭제되었습니다.

클라이언트 측 차이점

Firebase에서 Google ID 툴킷이 제공하는 기능은 두 가지로 나뉩니다. 구성요소:

  • Firebase 인증 SDK

    Firebase 인증에서 Identity Toolkit의 REST API는 Android, iOS 및 Android용 클라이언트 SDK에 패키징되어 있습니다. SDK를 사용하여 사용자를 로그인 및 등록할 수 있습니다. 액세스 사용자 프로필 정보 계정 연결, 업데이트, 삭제 및 비밀번호 재설정 백엔드 서비스와 통신하는 대신 클라이언트 SDK를 사용하여 REST 호출.

  • FirebaseUI 인증

    로그인, 가입, 비밀번호 복구 및 계정 연결이 Frebase 인증 SDK를 사용하여 다시 빌드되었습니다. 이 SDK는 iOS 및 Android용 오픈소스 SDK로 제공되므로 Identity Toolkit으로는 불가능한 방식으로 흐름을 완전히 맞춤설정할 수 있습니다

추가적인 차이점은 다음과 같습니다.

  • 세션 및 이전

    Identity Toolkit과 Firebase에서 세션이 다르게 관리되기 때문입니다. 인증, 사용자 다음 날짜 이후에 기존 세션이 종료됨 사용자가 다시 로그인해야 합니다

시작하기 전에

Identity Toolkit에서 Firebase 인증으로 마이그레이션하려면 먼저 필수

  1. Firebase Console을 열고 클릭합니다. Google 프로젝트를 가져오고 Identity Toolkit 프로젝트를 선택합니다.

  2. > 앱을 열 수 있는 권한이 IAM 및 관리 페이지로 이동합니다

  3. 서비스 계정 페이지를 엽니다. 여기에서 원하는 서비스 계정을 사용할 수 있습니다

  4. 서비스 계정 옆에 있는 > 키 만들기를 선택합니다. 그런 다음 비공개 키 만들기 대화상자에서 키 유형을 JSON으로 설정하고 클릭합니다. 만들기: 서비스 계정의 사용자 인증 정보가 포함된 JSON 파일은 자동으로 다운로드됩니다. 다음 단계에서 이 파일이 있어야 SDK를 초기화할 수 있습니다.

  5. Firebase Console로 돌아갑니다. 인증 섹션에서 이메일 템플릿 페이지를 엽니다. 이 페이지에서는 앱의 이메일 템플릿을 맞춤설정할 수 있습니다.

    Identity Toolkit에서 사용자가 비밀번호를 재설정하거나, 이메일 주소를 변경하여 이메일을 받았다면 해당 이메일 주소에서 OOB 코드를 받아야 했습니다. 그런 다음 이메일을 통해 사용자에게 코드를 보냅니다. Firebase는 아무 코드 없이 구성한 템플릿을 기반으로 이메일을 보냅니다. 추가 조치가 필요합니다.

  6. 선택사항: 서버에서 Firebase 서비스에 액세스해야 하는 경우 Firebase SDK를 설치합니다.

    1. npm로 Firebase Node.js 모듈을 설치할 수 있습니다.

      $ npm init
      $ npm install --save firebase-admin
      
    2. 코드에서 다음을 사용하여 Firebase에 액세스할 수 있습니다.

      var admin = require('firebase-admin');
      var app = admin.initializeApp({
        credential: admin.credential.cert('path/to/serviceAccountCredentials.json')
      });
      

다음으로 앱 플랫폼(Android)의 이전 단계를 완료하세요. iOS, .

서버 및 JavaScript

주요 변경사항

웹 구현에는 Identity Toolkit의 Firebase입니다.

  • 웹 세션 관리

    이전에는 사용자가 Identity Toolkit 위젯을 사용하여 인증하면 세션을 부트스트랩하는 데 사용된 쿠키가 사용자에 대해 설정됨 이 쿠키의 유효 기간은 2주가었으며 사용자가 계정 관리 위젯을 사용하여 비밀번호와 이메일 주소를 변경하세요. 다소 유용함 사이트가 이 쿠키를 사용하여 사이트의 다른 모든 페이지 요청을 인증했습니다. 다른 사이트는 이 쿠키를 사용하여 쿠키 관리 시스템에 적용됩니다.

    이제 Firebase 클라이언트 SDK에서 Firebase ID 토큰을 관리합니다. Firebase 인증의 백엔드와 협력하여 세션을 최신 상태로 유지합니다. 백엔드에서 중요한 계정 변경 (예: 사용자 계정)이 변경되면 비밀번호 변경)이 발생한 적이 있는지 확인합니다. Firebase ID 토큰은 자동으로 웹 클라이언트에서 쿠키로 설정되고 수명이 1시간밖에 되지 않습니다. 사용자가 1시간의 세션을 원하는 경우 Firebase ID 토큰은 모든 페이지 요청의 유효성을 검사하는 쿠키로 사용됩니다. 대신 리스너를 설정해야 함 사용자가 로그인할 때 Firebase ID 토큰을 가져옵니다. 토큰을 검증하고, 자체 쿠키에 액세스할 수 있습니다.

    쿠키의 세션 수명은 애플리케이션 보안 요구사항을 충족할 수 있습니다

  • 웹 로그인 흐름

    이전에는 로그인할 때 사용자가 accountchooser.com(으)로 리디렉션되었습니다. 사용자가 사용하기를 원하는 식별자를 학습하기 시작했습니다. Firebase 인증 이제 UI 흐름이 이메일을 포함한 로그인 방법 목록으로 시작됩니다. 옵션은 웹용 accountchooser.com로 이동하고 hintRequest API 사용 Android 또한 Firebase에서는 이메일 주소가 더 이상 필요하지 않으므로 있습니다. 이렇게 하면 익명 사용자, 커스텀 인증 사용자 이메일 주소가 필요하지 않은 제공업체의 사용자

  • 계정 관리 위젯

    이 위젯은 사용자가 이메일 주소를 변경하거나 비밀번호를 만들거나 ID 공급업체에서 계정의 연결을 해제할 수 있습니다. 현재는 개발 중입니다.

  • 로그인 버튼/위젯

    로그인 버튼, 사용자 카드와 같은 위젯은 더 이상 제공되지 않습니다. 그들은 Firebase Authentication API를 사용하여 아주 쉽게 빌드할 수 있습니다.

  • signOutUrl 없음

    firebase.auth.signOut()를 호출하고 콜백을 처리해야 합니다.

  • oobActionUrl 없음

    이제 Firebase에서 이메일 전송을 처리하고 Firebase에서 구성합니다. 살펴보겠습니다

  • CSS 맞춤설정

    FirebaseUI는 Material Design Lite 스타일을 사용하는데, 머티리얼 디자인 애니메이션을 동적으로 추가합니다.

1단계: 서버 코드 변경

  1. 서버가 Identity Toolkit 토큰 (2주 동안 유효)을 사용하여 웹 사용자 세션을 관리하려면 자체 웹 사용자 세션을 사용하도록 서버를 세션 쿠키에 저장됩니다.

    1. Firebase ID 토큰 검증을 위한 엔드포인트 구현 사용자를 위한 세션 쿠키를 설정합니다. 클라이언트 앱은 이 엔드포인트에 대한 Firebase ID 토큰입니다.
    2. 수신 요청에 자체 세션 쿠키가 포함되어 있는 경우 사용자가 인증된 것으로 간주합니다. 그렇지 않은 경우 요청을 다음과 같이 처리합니다. 인증되지 않았습니다.
    3. 사용자가 기존 로그인 정보를 잃지 않도록 하려면 2주 동안 기다린 후 만료되거나 웹 애플리케이션에 대한 이중 토큰 검증을 수행할 수도 있습니다. 을 만들 수 있습니다.
  2. 다음으로, Firebase 토큰이 Identity Toolkit과 다르기 때문입니다. 토큰의 경우 토큰 유효성 검사 로직을 업데이트해야 합니다. 서버에 Firebase 서버 SDK를 설치합니다. 또는 Firebase 서버 SDK에서 지원하지 않는 언어인 경우 JWT 토큰 검증 라이브러리를 다운로드하세요. 토큰을 올바르게 검증합니다.

  3. 위의 업데이트를 처음 수행하면 여전히 Identity Toolkit 토큰을 사용합니다 iOS 또는 Android 애플리케이션이 있는 경우 새 버전의 앱으로 업그레이드해야 사용자가 새 코드 경로가 작동합니다. 사용자가 2024년 11월 10일 이후로 앱에 있는 경우 버전을 검사하는 서버 유효성 검사 로직을 Firebase SDK 또는 토큰의 유효성을 검사하는 Identity Toolkit SDK 웹만 있는 경우 애플리케이션의 경우, 모든 새로운 인증 요청은 Firebase를 사용하기 때문에 Firebase 토큰만 사용하면 됩니다 확인 방법을 사용합니다.

Firebase Web API 참조를 확인하세요.

2단계: HTML 업데이트

  1. 앱에 Firebase 초기화 코드를 추가합니다.

    1. Firebase Console에서 프로젝트를 엽니다.
    2. 개요 페이지에서 앱 추가를 클릭한 후 앱에 Firebase 추가 웹 앱을 참조하세요. Firebase를 초기화하는 코드 스니펫이 표시됩니다.
    3. 초기화 스니펫을 복사하여 웹페이지에 붙여넣습니다.
  2. FirebaseUI 인증 추가 있습니다.

    <script src="https://www.gstatic.com/firebasejs/ui/live/0.4/firebase-ui-auth.js"></script>
    <link type="text/css" rel="stylesheet" href="https://www.gstatic.com/firebasejs/ui/live/0.4/firebase-ui-auth.css" />
    <!-- *******************************************************************************************
       * TODO(DEVELOPER): Paste the initialization snippet from:
       * Firebase Console > Overview > Add Firebase to your web app. *
       ***************************************************************************************** -->
    <script type="text/javascript">
      // FirebaseUI config.
      var uiConfig = {
        'signInSuccessUrl': '<url-to-redirect-to-on-success>',
        'signInOptions': [
          // Leave the lines as is for the providers you want to offer your users.
          firebase.auth.GoogleAuthProvider.PROVIDER_ID,
          firebase.auth.FacebookAuthProvider.PROVIDER_ID,
          firebase.auth.TwitterAuthProvider.PROVIDER_ID,
          firebase.auth.GithubAuthProvider.PROVIDER_ID,
          firebase.auth.EmailAuthProvider.PROVIDER_ID
        ],
        // Terms of service url.
        'tosUrl': '<your-tos-url>',
      };
    
      // Initialize the FirebaseUI Widget using Firebase.
      var ui = new firebaseui.auth.AuthUI(firebase.auth());
      // The start method will wait until the DOM is loaded.
      ui.start('#firebaseui-auth-container', uiConfig);
    </script>
    
  3. 앱에서 Identity Toolkit SDK를 삭제합니다.

  4. 세션 관리를 위해 Identity Toolkit ID 토큰을 사용한다면 클라이언트 측에서 다음과 같이 변경해야 합니다.

    1. Firebase에 성공적으로 로그인한 후 다음 방법으로 Firebase ID 토큰을 가져옵니다. firebase.auth().currentUser.getToken()를 호출합니다.

    2. Firebase ID 토큰을 백엔드 서버로 전송하고 검증하고 발행합니다. 자신의 세션 쿠키에 저장됩니다.

      민감한 정보를 실행할 때 세션 쿠키에만 의존하지 않음 인증된 수정 요청을 서버에 전송할 수 있습니다 나 추가 교차 사이트 요청 위조 (CSRF)를 제공해야 함 있습니다

      프레임워크가 CSRF 보호를 제공하지 않는 경우 로그인한 사용자의 Firebase ID 토큰을 얻는 것이 공격의 예입니다. getToken()로 설정하고 각 요청 (세션 쿠키도 기본적으로 전송됩니다. 그런 다음 이 토큰을 검증하여 세션 쿠키 확인 외에 Firebase 서버 SDK를 사용하여 확인할 수 있습니다 이렇게 하면 Firebase ID 토큰은 다음을 통해서만 저장되므로 CSRF 공격이 성공할 수 있습니다. 웹 스토리지에 저장됩니다

    3. Identity Toolkit 토큰은 2주 동안 유효합니다. 권장 사항 2주 동안 지속된 토큰을 계속 발급하거나 앱의 보안 요구사항에 따라 길이를 늘리거나 줄일 수 있습니다. 사용자가 로그아웃하면 세션 쿠키를 삭제합니다.

3단계: IDP 리디렉션 URL 업데이트

  1. Firebase Console에서 인증 섹션을 열고 로그인 방법

  2. 지원하는 제휴 로그인 제공업체마다 다음을 수행합니다.

    1. 로그인 제공업체의 이름을 클릭합니다.
    2. OAuth 리디렉션 URI를 복사합니다.
    3. 로그인 제공업체의 개발자 콘솔에서 OAuth 리디렉션을 업데이트합니다. URI.

Android

1단계: 앱에 Firebase 추가

  1. Firebase Console을 엽니다. 이미 가져온 Identity Toolkit 프로젝트를 선택합니다.

  2. 개요 페이지에서 앱 추가를 클릭한 다음 다음에 Firebase 추가를 클릭합니다. 내 Android 앱을 참고하세요. Firebase 추가 대화상자에서 앱의 패키지를 제공합니다. 이름 및 서명 인증서 지문을 선택하고 앱 추가를 클릭합니다. 이 그러면 google-services.json 구성 파일이 있습니다.

  3. 구성 파일을 Android 앱 모듈 루트 디렉터리에 복사합니다. 이 구성 파일에는 프로젝트와 Google OAuth 클라이언트 정보가 포함되어 있습니다.

  4. 프로젝트 수준 build.gradle 파일 (<var>your-project</var>/build.gradle) defaultConfig 섹션:

    defaultConfig {
       …..
      applicationId "com.your-app"
    }
    
  5. 또한 프로젝트 수준 build.gradle 파일에 포함할 종속 항목을 추가합니다. google-services 플러그인입니다.

    buildscript {
     dependencies {
       // Add this line
       classpath 'com.google.gms:google-services:3.0.0'
     }
    }
    
  6. 앱의 앱 수준 build.gradle 파일에서 (<var>my-project</var>/<var>app-module</var>/build.gradle) 아래에 google-services 플러그인을 사용 설정합니다.

    // Add to the bottom of the file
    apply plugin: 'com.google.gms.google-services'
    

    google-services 플러그인은 google-services.json 파일을 사용하여 애플리케이션을 구축해야 합니다

  7. 또한 앱 수준 build.gradle 파일에서 Firebase 인증을 추가합니다. 종속됩니다.

    compile 'com.google.firebase:firebase-auth:23.0.0'
    compile 'com.google.android.gms:play-services-auth:21.2.0'
    

2단계: Identity Toolkit SDK 삭제하기

  1. AndroidManifest.xml에서 Identity Toolkit 구성을 삭제합니다. 파일에서 참조됩니다. 이 정보는 google-service.json 파일에 포함되어 있으며 Google 서비스 플러그인에서 로드할 수 있습니다
  2. 앱에서 Identity Toolkit SDK를 삭제합니다.

3단계: 앱에 FirebaseUI 추가

  1. FirebaseUI 인증 추가 해야 합니다.

  2. 앱에서 Identity Toolkit SDK에 대한 호출을 있습니다.

iOS

1단계: 앱에 Firebase 추가

  1. 다음 명령어를 실행하여 앱에 Firebase SDK를 추가합니다.

    $ cd your-project directory
    $ pod init
    $ pod 'Firebase'
    
  2. Firebase Console을 엽니다. 이미 가져온 Identity Toolkit 프로젝트를 선택합니다.

  3. 개요 페이지에서 앱 추가를 클릭한 다음 다음에 Firebase 추가를 클릭합니다. 확인할 수 있습니다. Firebase 추가 대화상자에서 앱의 번들 ID를 입력하고 App Store ID를 입력한 다음 앱 추가를 클릭합니다. 이 그러면 GoogleService-Info.plist 구성 파일이 있습니다. 프로젝트에 번들 ID가 여러 개 있는 경우 각 번들 ID Firebase Console에서 연결해야 GoogleService-Info.plist 파일.

  4. 구성 파일을 Xcode 프로젝트의 루트에 복사하여 모든 타겟에 적용됩니다

2단계: Identity Toolkit SDK 삭제하기

  1. 앱의 Podfile에서 GoogleIdentityToolkit를 삭제합니다.
  2. pod install 명령어를 실행합니다.

3단계: 앱에 FirebaseUI 추가

  1. FirebaseUI 인증 추가 해야 합니다.

  2. 앱에서 Identity Toolkit SDK에 대한 호출을 있습니다.