2017-12-04 3 views
2

Android 기반 앱에 Firebase를 기존 인증과 통합합니다. 단계 아래 Firebase로 사용자 정의 인증 및 JWT 생성

  • 인증 클라이언트
  • 나는 보안 토큰, 해야합니까를 생성하는 혼란 스러워요 보안 서버의 보안 토큰을 생성 인증을

    1. 을 달성하기 위해 따라야 할 필요 Firebase documentation에 따라 보안 서버에서 생성해야합니까? 그 의미는 무엇입니까? 안드로이드 클라이언트 자체에서 토큰을 생성 할 생각입니다.

      는이 후 Retrofit

      통해 MongoLab API와 연결되어 MongoDB에 대해 확인합니다 나를 입력으로 자격 증명을받은 후, 기존 인증 메커니즘을 설명하자, 나는 아래의 방법으로 중포 기지와 통합 생각하고

      1. 로그인에서 성공 사용자 로그인은 성공적인 로그인 후 안드로이드 클라이언트 자체에서 안전한 토큰 (JWT)을 생성합니다. JWT 생성으로
      2. , 내가 다시 보안 토큰을 생성 (기존 인증 메커니즘으로 처음 중포 기지와 두 번째 시간) 클라이언트를 인증

      합니다 (JWT)

      Map<String, Object> payload = new HashMap<String, Object>(); 
      
      payload.put("uid", "uniqueId1"); 
      payload.put("some", "arbitrary"); 
      payload.put("data", "here"); 
      
      TokenGenerator tokenGenerator = new TokenGenerator("<YOUR_FIREBASE_SECRET>"); 
      String token = tokenGenerator.createToken(payload); 
      

      인증 클라이언트

      Firebase ref = new Firebase("https://<YOUR-FIREBASE-APP>.firebaseio.com/"); 
      
      ref.authWithCustomToken(token, new Firebase.AuthResultHandler() { 
          @Override 
          public void onAuthenticationError(FirebaseError error) { 
           System.err.println("Login Failed! " + error.getMessage()); 
          } 
      
          @Override 
          public void onAuthenticated(AuthData authData) { 
           System.out.println("Login Succeeded!"); 
          } 
      }); 
      

      여기에 사용자 인증 2 번과 같은 기존의 인증과 Firebase 사용자 지정 인증과 같은 왕복 이동이 있습니다. 위의 프로세스를 수행하기위한 더 좋은 방법이 있습니까?

      enter image description here

    답변

    0

    사용자 정의 토큰은 백엔드 서버에서 생성되어야한다. 클라이언트 측에서 생성하면 전체 사용자를 손상시키는 프로젝트 자격 증명이 노출됩니다. 앱을 설치할 수있는 공격자는 서비스 계정 자격 증명을 파악하고 사용자에게 모든 권한을 부여 할 수 있습니다.

    +0

    감사! 백엔드 서버 ??? 이 용도로 응용 프로그램 서버가 있어야합니까? –

    +0

    응용 프로그램 서버가 필요합니다. 사용자 지정 토큰을 처리하는 데 사용되는 메커니즘은 클라이언트가 아닌 클라이언트에서 실행해야합니다. 이것은 개인 키가 도난 당하지 않도록 보호합니다. – bojeil