Google Identity Toolkit에서 Google Cloud Identity Platform으로 이전

Google Identity 툴킷의 최신 버전이 Identity PlatformFirebase 인증. 앞으로 Identity Toolkit의 기능 작업이 정지됩니다. 완전히 새로운 기능 개발은 Identity Platform 및 Firebase에서 진행됩니다. 인증. Identity Toolkit 개발자는 실용적이 되는 대로 즉시 이러한 플랫폼을 구축해야 합니다.

새로운 기능

Identity Platform은 이미 Google Identity Toolkit에 비해 상당한 기능이 향상되었습니다.

  • 새 관리 콘솔

    Identity Platform에는 사용자를 보고, 수정하고, 삭제할 수 있는 새로운 개발자 콘솔이 있습니다. 이 콘솔은 로그인 및 가입 흐름을 디버그하는 데 유용할 수 있습니다. 또한 Console을 사용하여 인증 방법을 구성하고 이메일 템플릿을 맞춤설정할 수 있습니다.

  • 새로운 인증 방법

    Identity Platform은 SAML 및 OIDC는 SaaS 앱 및 서비스를 확장할 수 있도록 지원합니다. Identity Platform은 GitHub, Microsoft, Yahoo 등의 제공업체도 지원합니다. 익명 로그인을 사용하여 사용자가 로그인 또는 가입 절차를 거칠 필요 없이 고유한 사용자 ID를 만들 수 있습니다. 이렇게 하면 일반 사용자와 마찬가지로 인증된 API를 호출할 수 있습니다. 사용자가 계정에 가입하면 모든 활동이 동일한 사용자 ID로 보존됩니다. 이는 서버 측 쇼핑과 같은 시나리오에 유용합니다 사용자의 참여를 유도하고자 하는 장바구니 또는 기타 애플리케이션을 가입 절차를 통해 제품을 홍보할 수 있습니다.

  • 서비스수준계약 및 클라우드 지원을 통해 안심하고 확장

    Identity Platform은 신뢰할 수 있는 Google 인프라를 기반으로 하며 Google Cloud의 서비스수준계약 및 지원을 제공합니다. 즉, 개발자는 안심하고 서비스를 확장할 수 있으며 Google이 필요한 탄력성, 가용성, 확장성을 제공하도록 맡길 수 있습니다.

  • 모든 Firebase에 액세스

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

  • 업데이트된 UI

    Google의 최신 UX를 기반으로 UI 흐름을 완전히 다시 구축했습니다. 있습니다. 여기에는 비밀번호 복구, 계정 연결, 새/기존 계정 구분 흐름이 포함되며, 이러한 흐름은 코딩 및 디버그하는 데 상당한 시간이 걸리는 경우가 많습니다. Android에서 비밀번호 대용 Smart Lock을 통합하여 참여 의 로그인 및 가입 전환을 크게 개선했습니다. 또한 애플리케이션에 맞게 테마를 쉽게 수정할 수 있으며 최대한의 맞춤설정을 위해 AndroidiOS 버전이 오픈소스로 제공됩니다.

  • 간소화된 서버 설정

    Identity Toolkit을 사용하면 많은 개발자가 이메일 복구 흐름을 구현하지 않아 사용자가 비밀번호를 잊어버린 경우 계정을 복구할 수 없었습니다. Identity Platform은 이메일 확인, 비밀번호 재설정, 비밀번호 변경 메시지를 사용자와 텍스트를 쉽게 맞춤설정할 수 있음 해 줍니다. 또한 더 이상 리디렉션 호스팅용 UI 위젯 비밀번호 변경 작업 완료

  • 새로운 SDK

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

  • 모바일 앱용 세션 관리

    Identity Toolkit을 통해 앱은 초기 인증 이벤트를 수신합니다. Identity Platform은 인증 이벤트에서 생성된 갱신 토큰을 사용하여 Android, iOS, JavaScript용 1시간 길이의 액세스 토큰으로 교환하는 백엔드 서비스를 사용합니다. 사용자가 비밀번호를 변경할 때 갱신 토큰은 새 액세스 토큰을 더 오래 생성할 수 있으므로 사용자가 해당 기기에서 다시 인증합니다.

기능 차이

일부 Identity Toolkit 기능은 현재 Identity Platform에서 사용할 수 없으며, 다른 기능은 디자인이 변경되어 다르게 작동합니다. 이러한 기능이 앱에 중요한 경우 즉시 이전하지 않을 수도 있습니다. 대부분의 경우 이러한 기능이 앱에 중요하지 않거나 이전을 진행할 수 있는 간단한 대체 방법이 있을 수 있습니다.

서버 측 차이점

기본 REST API, 계정 유효성 검사 로직, 기본 사용자 데이터베이스가 포함된 핵심 Identity Toolkit 서비스는 일부만 업데이트되었습니다. 하지만 일부 기능과 Identity Platform을 서비스에 통합하는 방식은 변경되었습니다.

  • ID 공급업체

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

  • 서버 라이브러리

    현재 Java, Node.js, Python, Go, C#용 Admin SDK가 있습니다.

  • 계정 관리 이메일

    비밀번호 재설정, 이메일 확인 및 이메일 변경 메시지는 Firebase 또는 개발자의 사용할 수 있습니다 현재 이메일 템플릿은 UI에서 제한적으로만 맞춤설정할 수 있지만 Admin SDK를 사용하면 추가로 맞춤설정할 수 있습니다.

  • 이메일 주소 변경 확인

    Identity Toolkit에서 사용자가 이메일 주소를 변경하기로 결정하면 이메일 주소 변경 흐름을 계속할 수 있는 링크가 포함된 이메일이 새 주소로 전송됩니다.

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

  • IDP 출시

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

클라이언트 측 차이

Identity Platform에서 Google Identity Toolkit에서 제공하는 기능은 두 구성요소로 나뉩니다.

  • 클라이언트 및 서버 SDK

    Identity Platform에서는 Identity Toolkit의 REST API에서 제공하는 기능이 Android, iOS, JavaScript에서 사용할 수 있는 클라이언트 SDK로 패키징되었습니다. SDK를 사용하여 사용자를 로그인 및 가입시키고, 사용자 프로필 정보에 액세스하고, 계정을 연결, 업데이트, 삭제하고, REST 호출을 통해 백엔드 서비스와 통신하는 대신 클라이언트 SDK를 사용하여 비밀번호를 재설정할 수 있습니다.

  • UI 위젯

    로그인, 가입, 비밀번호 복구 및 계정 연결이 클라이언트 SDK를 사용하여 다시 빌드되고 로그인해야 합니다. Cloud Functions는 iOS, Android Google Cloud API로는 불가능한 방식으로 흐름을 Identity 도구 키트를 사용할 수 있습니다

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

  • 세션 및 이전

    Identity Toolkit과 Identity Platform에서 세션이 다르게 관리되므로 SDK를 업그레이드하면 사용자의 기존 세션이 종료되고 사용자가 다시 로그인해야 합니다.

시작하기 전에

Identity Toolkit에서 Identity Platform으로 이전하려면 다음을 실행해야 합니다.

  1. Cloud 콘솔을 열고 Identity Toolkit 프로젝트를 선택합니다.

  2. Marketplace에서 Identity Platform으로 이동하여 'Identity Platform 사용 설정'을 선택합니다.

  3. 서비스 계정 페이지를 엽니다. 여기에서 이전에 Identity Toolkit에 구성한 서비스 계정을 확인할 수 있습니다.

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

  5. Cloud 콘솔로 돌아갑니다. 제공업체 섹션의 '이메일/비밀번호' 사용하는 경우 이메일 템플릿 페이지를 엽니다. 그런 다음 앱의 템플릿을 맞춤설정할 수 있습니다.

    Identity Toolkit에서 사용자가 비밀번호를 재설정하거나 이메일 주소를 변경하거나 이메일 주소를 인증하는 경우 개발자는 Identity Toolkit 서버에서 OOB 코드를 가져와 이메일을 통해 사용자에게 코드를 전송해야 했습니다. Identity Platform은 별도의 작업 없이 사용자가 구성한 템플릿을 기반으로 이메일을 추가 조치가 필요합니다.

  6. 선택사항: Firebase SDK를 설치합니다.

    1. npm를 사용하여 Node.js Admin SDK를 설치할 수 있습니다.

      $ 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의 Identity Platform을 선택할 수 있습니다

  • 웹 세션 관리

    이전에는 사용자가 ID 도구 키트 위젯을 사용하여 인증하면 사용자에 대해 세션을 부트스트랩하는 데 사용되는 쿠키가 설정되었습니다. 이 쿠키의 유효 기간은 2주가었으며 사용자가 계정 관리 위젯을 사용하여 비밀번호와 이메일 주소를 변경하세요. 다소 유용함 사이트에서 이 쿠키를 사용하여 사이트의 다른 모든 페이지 요청을 인증했습니다. 다른 사이트에서는 이 쿠키를 사용하여 프레임워크의 쿠키 관리 시스템을 통해 자체 쿠키를 만들었습니다.

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

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

  • 웹 로그인 흐름

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

  • 계정 관리 위젯

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

  • 로그인 버튼/위젯

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

  • signOutUrl 없음

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

  • oobActionUrl 없음

    이제 이메일 전송은 Identity Platform에서 처리되며 Firebase Console에서 구성됩니다.

  • CSS 맞춤설정

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

1단계: 서버 코드 변경

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

    1. 엔드포인트 구현 ID 토큰 검증 사용자에 대한 세션 쿠키를 설정합니다. 클라이언트 앱은 이 엔드포인트에 대한 Firebase ID 토큰입니다.
    2. 수신 요청에 자체 세션 쿠키가 포함된 경우 사용자를 인증된 것으로 간주할 수 있습니다. 그렇지 않으면 요청을 인증되지 않은 것으로 간주합니다.
    3. 사용자가 기존 로그인 세션을 잃지 않도록 하려면 모든 Identity Toolkit 토큰이 만료될 때까지 2주를 기다리거나 아래 3단계에 설명된 대로 웹 애플리케이션에 이중 토큰 유효성 검사를 실행해야 합니다.
  2. 다음으로 ID 토큰이 Identity 도구 키트와 다르기 때문입니다. 토큰의 경우 토큰 유효성 검사 로직을 업데이트해야 합니다. 설치 Admin SDK 서버에 복사됩니다. 또는 Admin SDK에서 지원하지 않는 언어를 사용하는 경우 JWT 토큰 검증 라이브러리 다운로드 적절하게 토큰의 유효성을 검사합니다.

  3. 위의 업데이트를 처음 실행할 때는 Identity Toolkit 토큰을 사용하는 코드 경로가 여전히 있을 수 있습니다. iOS 또는 Android 애플리케이션이 있는 경우 새 버전의 앱으로 업그레이드해야 사용자가 새 코드 경로가 작동합니다. 사용자에게 앱을 업데이트하도록 강제하지 않으려면 토큰을 검사하고 토큰을 확인하는 데 Firebase SDK 또는 Identity Toolkit SDK를 사용해야 하는지 결정하는 서버 유효성 검사 로직을 추가하면 됩니다. 웹 애플리케이션만 있는 경우 모든 새 인증 요청이 Identity Platform으로 전환되므로 ID 토큰 확인 메서드만 사용하면 됩니다.

Web API 참조를 참고하세요.

2단계: HTML 업데이트

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

    1. Cloud 콘솔에서 프로젝트를 엽니다.
    2. providers에서 페이지에서 애플리케이션 설정 세부정보를 클릭합니다. 이 코드 스니펫이 초기화하면 Identity Platform이 표시됩니다
    3. 초기화 스니펫을 복사하여 웹페이지에 붙여넣습니다.
  2. 인증 위젯 추가 있습니다.

    <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. Identity Platform으로 로그인한 후 firebase.auth().currentUser.getToken()를 호출하여 ID 토큰을 가져옵니다.

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

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

      프레임워크가 CSRF 보호를 제공하지 않는 경우 로그인한 사용자의 ID 토큰을 얻고자 함 getToken()로 설정하고 각 요청 (세션 쿠키도 기본적으로 전송됩니다. 그런 다음 백엔드 프레임워크에서 완료한 세션 쿠키 확인 외에도 Admin SDK를 사용하여 토큰의 유효성을 검사합니다. 이렇게 하면 CSRF 공격은 성공할 수 있습니다. ID 토큰은 웹 스토리지에 저장하고 쿠키에 저장하지 않습니다

    3. Identity Toolkit 토큰은 2주 동안 유효합니다. 2주 동안 지속되는 토큰을 계속 발급하거나 앱의 보안 요구사항에 따라 더 길거나 짧게 설정할 수 있습니다. 사용자가 로그아웃하면 세션 쿠키를 삭제합니다.

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

  1. Cloud 콘솔에서 Providers를 열고 섹션으로 이동합니다.

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

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

Android

1단계: Firebase로 앱에 Identity Platform 추가

  1. Google 검색 앱 홈 화면의 오른쪽 상단에 있는 Cloud 콘솔 Identity Toolkit 프로젝트를 선택합니다.

  2. 제공업체 페이지에서 애플리케이션 설정 세부정보를 클릭하고 Android 탭에서 Firebase 시작하기를 클릭합니다. 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)에서 Android Gradle 플러그인 뒤에 다음 줄을 추가하여 google-services 플러그인을 사용 설정합니다.

    apply plugin: 'com.android.application'
    // Add this line
    apply plugin: 'com.google.gms.google-services'
    

    google-services 플러그인은 google-services.json 파일을 사용하여 Firebase를 사용하도록 애플리케이션을 구성합니다.

  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-services 플러그인에 의해 로드됩니다.
  2. 앱에서 Identity Toolkit SDK를 삭제합니다.

3단계: 앱에 FirebaseUI 추가

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

  2. 앱에서 Identity Toolkit SDK 호출을 FirebaseUI 호출로 바꿉니다.

iOS

1단계: 앱에 Firebase 추가

  1. 다음 명령어를 실행하여 앱에 클라이언트 SDK를 추가합니다.

    $ cd your-project directory
    $ pod init
    $ pod 'Firebase'
    
  2. Cloud 콘솔을 열고 Identity Toolkit 프로젝트를 선택합니다.

  3. 제공업체 페이지에서 애플리케이션 설정 세부정보를 클릭하고 iOS 탭을 선택한 다음 Firebase에서 시작하기를 클릭합니다. Firebase 추가 대화상자에서 앱의 패키지 이름과 서명 인증서 지문을 입력하고 앱 추가를 클릭합니다. 그러면 google-services.json 구성 파일이 컴퓨터에 다운로드됩니다. Firebase 추가 대화상자에서 앱의 번들 ID와 App Store ID를 선택한 다음 앱 추가를 클릭합니다. 그러면 GoogleService-Info.plist 구성 파일이 있습니다. 프로젝트에 번들 ID가 여러 개 있으면 각 번들 ID에 자체 GoogleService-Info.plist 파일이 포함되도록 Firebase Console에서 연결해야 합니다.

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

2단계: Identity Toolkit SDK 삭제하기

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

3단계: 앱에 FirebaseUI 추가

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

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