def verify_token(token):
    if app.config["ENABLE_AUTH"]:
        try:
            auth.verify_id_token(token)
            return True
        except ValueError:
            print 'Authentication failed'
            return False
    return True
예제 #2
0
 def _token_is_valid(self, req, token):
     try:
         decoded_token = auth.verify_id_token(token)
         req.context['auth_user'] = decoded_token
     except Exception as e:
         return False
     if not decoded_token:
         return False
     return True
예제 #3
0
def verify_token():
    if 'Authorization' not in request.headers:
        raise ValueError("Token not present")

    # Verifying the token, if it fails proceed to except block.
    token = request.headers['Authorization']
    decoded_token = auth.verify_id_token(token, fadzmaq.auth_app, False)
    uid = decoded_token['uid']
    print('Verified, UID:', uid)
    return uid
예제 #4
0
def check_token():
    token = request.headers.get('token')
    if token:
        try:
            decoded_token = auth.verify_id_token(token)
            uid = decoded_token['uid']
        except (ValueError, firebase_admin.exceptions.FirebaseError):
            return ({'error': True, 'message': {'error': 'Invalid Token or Firebase Error'}, 'status': 401})
        return ({'error': False, 'uid': uid})
    return ({'error': True, 'message': {'error': 'No Token Provided'}, 'status': 401})
예제 #5
0
def verify_login(uid, msgDict):
    if 'token' not in msgDict:
        print("login attempt failed")
    authed_user = auth.verify_id_token(msgDict['token'])
    user_uid = authed_user['uid']
    if user_uid not in active_users:
        active_users[user_uid] = {'devs': {}}
    fbClient.add_user_devs(user_uid)
    ack_builder = {'type': 'login_ack', 'success': True}
    send_user_msg(user_uid, ack_builder)
예제 #6
0
 def wrap(*args, **kwargs):
     if not request.headers.get("authorization"):
         return {"message": "No token provided"}, 400
     try:
         user = auth.verify_id_token(request.headers["Authorization"])
         request.user = user
     except Exception as e:
         print('error', e)
         return {"message": "Invalid token provided.", "status": 400}, 400
     return f(*args, **kwargs)
예제 #7
0
def verificar(id_token):
    response = ""
    try:
        decoded_token = auth.verify_id_token(id_token)
        response = decoded_token['uid']
    except ValueError as err:
        print("\nHubo un error decodificando el Token: \n\n", err)
        response = "Error"
    #print(response)
    return response
예제 #8
0
def user():
    try:
        id_token = request.cookies.get('id_token')
        decoded_token = auth.verify_id_token(id_token)
    except:
        abort(401)

    user = User.query.get(decoded_token['uid'])

    return user.to_dict(), 200
예제 #9
0
def verify_id_token(id_token):
    """
    Verifies the given id token and returns the user's uid if successful.
    Otherwise, throws an exception.
    """
    # Verify the ID token while checking if the token is revoked by
    # passing check_revoked=True
    decoded_token = auth.verify_id_token(id_token, check_revoked=True)
    # Token is valid and not revoked
    return decoded_token['uid']
예제 #10
0
def token(request):
    token = request.GET['token']
    print('token:' + token);

    # ID トークンを確認する
    decoded_token = auth.verify_id_token(token)
    uid = decoded_token['uid']
    
    print('uid:' + uid);
    return HttpResponse("OK")
예제 #11
0
 def verify_id_token(cls, id_token):
     """
     Verify the id token from firebase
     """
     try:
         decoded_token = auth.verify_id_token(id_token)
         return decoded_token
     except ValueError as e:
         raise ValidationError(
             'Invalid Firebase ID Token.', HTTP_422_UNPROCESSABLE_ENTITY) from e
예제 #12
0
 def verify_token(token):
     """
     The function set the method to be used for token authentication by the Flask-HTTPAuth module
     Reads the token and pass it to the verify_id_token function of the Firebase SDK
     """
     try:
         decoded_token = auth.verify_id_token(token)
         return decoded_token['uid']
     except auth.InvalidIdTokenError:
         return False
예제 #13
0
def token_verification(id_token):
    try:
        decoded_token = auth.verify_id_token(id_token)
    except ValueError or exceptions.InvalidArgumentError:
        logging.error('id_token not string or empty or invalid')
        return ''
    except auth.RevokedIdTokenError:
        logging.error('id_token has been revoked')
        return ''
    return decoded_token
예제 #14
0
	def verify_token(*args, **kwargs):
		# Verify firebase auth token here
		try:	
			id_token = request.args.get('token')
			result = auth.verify_id_token(id_token)
            #Getting name from id token 
			print(result['name'] + " made a request")
		except:
			return jsonify({"error": "Bad token"})		
		return f(*args, **kwargs)
예제 #15
0
파일: main.py 프로젝트: MikeSoft/ms-auth
 def get(self):
     try:
         id_token = self.request.headers.get('Authorization', '')
         decoded_token = auth.verify_id_token(id_token, app=f_app)
         uid = decoded_token['uid']
         self.set_status(200)
         self.set_header("UID", uid)
     except Exception as ex:
         self.clear()
         self.set_status(401)
 def test_project_id_option(self):
     app = firebase_admin.initialize_app(
         testutils.MockCredential(), options={'projectId': 'mock-project-id'}, name='myApp')
     _overwrite_cert_request(app, MOCK_REQUEST)
     try:
         claims = auth.verify_id_token(TEST_ID_TOKEN, app)
         assert claims['admin'] is True
         assert claims['uid'] == claims['sub']
     finally:
         firebase_admin.delete_app(app)
예제 #17
0
    def decorated_func(*args, **kwargs):
        try:
            request_user_info = auth.verify_id_token(request.headers['auth'])

        except:
            return {'message': 'Unable to authenticate'}, 403

        kwargs['authenticated_user_id'] = request_user_info['user_id']

        return f(*args, **kwargs)
예제 #18
0
 def decorated_function(*args, **kwargs):
     auth_header = request.headers.get('authorization', None)
     if auth_header is None:
         # print('no auth token')
         return jsonify({
             'status': 'error',
             'message': 'no authorization token provided'
         })
     id_token = auth_header.split(' ', 1)[1]
     try:
         auth.verify_id_token(id_token)
     except BaseException:
         # print('invalid token')
         # print(e)
         return jsonify({
             'status': 'error',
             'message': 'invalid token provided'
         })
     return f(*args, **kwargs)
예제 #19
0
    def wrap(*args, **kwargs):

        token = request.headers['Authorization']
        decoded_token = auth.verify_id_token(token)

        if decoded_token['admin'] is False:
            return jsonify(
                {'Error message': "You don't have the access rights"})

        return f(*args, **kwargs)
예제 #20
0
파일: auth.py 프로젝트: psimakov/pyaedj
 def verify_firebase_id_token(self, id_token):
     if not id_token:
         return None
     try:
         return firebase_auth.verify_id_token(id_token,
                                              app=self._get_app(),
                                              check_revoked=IS_GAE_PROD)
     except ValueError as e:
         logging.error('Failed to decode Firebase id_token: %s', e)
         return None
예제 #21
0
def isAuthenticated(accessToken: str):
    ''' Check if recieved accessToken is valid or not\n 
     (object) => [bool, str/None]
    '''
    try:
        decoded_token = auth.verify_id_token(accessToken)
        return [True, decoded_token]
    except:
        # If verification fails, return False
        return [False, None]
예제 #22
0
 def wrap(*args, **kwargs):
     if not request.headers.get('authorization'):
         return {'Message': 'No token provided'}, 400
     try:
         user = auth.verify_id_token(request.headers['authorization'])
         request.user = user
     except Exception as e:
         print(e)
         return {'message': 'Invalid token provided.'}, 400
     return f(*args, **kwargs)
예제 #23
0
def test_set_custom_user_claims(new_user, api_key):
    claims = {'admin' : True, 'package' : 'gold'}
    auth.set_custom_user_claims(new_user.uid, claims)
    user = auth.get_user(new_user.uid)
    assert user.custom_claims == claims
    custom_token = auth.create_custom_token(new_user.uid)
    id_token = _sign_in(custom_token, api_key)
    dev_claims = auth.verify_id_token(id_token)
    for key, value in claims.items():
        assert dev_claims[key] == value
예제 #24
0
def extract_phone_number_from_firebase_id_token(id_token):
    """get the phone number from a firebase id-token"""
    phone_number = None
    try:
        from firebase_admin import auth
        decoded_token = auth.verify_id_token(id_token)
        phone_number = decoded_token['phone_number']
    except Exception as e:
        log.error('failed to decode the firebase token: %s' % e)
    return phone_number
예제 #25
0
    def post(self, request):
        serializer = self.serializer_class(data=request.data)

        if not serializer.is_valid():
            return Response(serializer.errors)

        # Validate firebase-token
        try:
            payload = auth.verify_id_token(
                id_token=serializer.validated_data['token'],
                check_revoked=True,
            )
        except ValueError:
            raise AuthenticationFailed('Token is not a string or is empty')

        except ExpiredIdTokenError:
            raise AuthenticationFailed('Specified token has expired')

        except RevokedIdTokenError:
            raise AuthenticationFailed('Token has been revoked')

        except InvalidIdTokenError:
            raise AuthenticationFailed('Token is not a valid Firebase ID token')

        except CertificateFetchError:
            raise AuthenticationFailed('An error occurs while fetching the public key certificates')

        # Check if sign_in_provider is not anonymous
        if payload["firebase"]["sign_in_provider"] == "anonymous":
            raise AuthenticationFailed('Firebase anonymous sign-in is not supported')

        # Check that email is confirmed
        if EMAIL_VERIFICATION:
            if not payload["email_verified"]:
                raise AuthenticationFailed('User email not yet confirmed')

        # Try to get user by uid
        user = User.objects.filter(
            **{User.USERNAME_FIELD: payload['uid']}
        ).first()

        # If doesn't exist, create one
        if user is None:
            firebase_user = auth.get_user(payload['uid'])
            user = User.objects.create(**{
                User.USERNAME_FIELD: payload['uid'],
                'email': firebase_user.email,
            })

        # Crete access/refresh token pair for user and return it
        refresh = RefreshToken.for_user(user)
        return Response({
            'refresh': str(refresh),
            'access': str(refresh.access_token),
        })
예제 #26
0
    def post(self, request):
        data = {
            'secret': settings.GOOGLE_RECAPTCHA,
            'response': request.data.get('g_token', None)
        }

        resp = requests.post(
            'https://www.google.com/recaptcha/api/siteverify',
            data=data
        )

        print(resp.json())

        if not resp.json().get('success'):
            return Response(data={'message': 'ReCAPTCHA not verified!'}, status=406)

        password = request.data.get('password', None)
        username = request.data.get('username', None)
        id_token = request.data.get('id_token', None)
        if password is None and username is None:
            try:
                decoded_token = auth.verify_id_token(id_token)
                username = decoded_token['email']
            except Exception as e:
                print(e)
                return Response({"message": "Firebase Token Verification Failed."}, status=400)
            user = User.objects.filter(username=username)
            print(user.count())
            if user.count() == 0:
                return Response({"message": "Invalid Details"}, status=400)
            user = user[0]
        else:
            print(username, password)
            user = authenticate(username=username, password=password)
            print(user)
            if not user:
                return Response({"message": "Invalid Details"}, status=400)

        try:
            condition = user.is_blocked or user.is_disqualified
        except:
            pass

        if condition:
            return Response({"message": "You don't have access to the portal. Contact [email protected]"}, status=403)
        else:
            token, _ = Token.objects.get_or_create(user=user)
            return Response({
                "message": "User Logged In",
                "user": {
                    "username": user.username,
                    "full_name": user.full_name,
                    "phone_no": user.phone,
                    "token": token.key
                }}, status=200)
예제 #27
0
    def post(self, request, pk, format=None):
        try:
            uid = pk
            token = request.GET.get("token", None)
            decoded_token = auth.verify_id_token(token)
            decoded_uid = decoded_token['uid']
            user = auth.get_user(decoded_uid)
            data_dict = request.data
            if uid == decoded_uid:
                tYpe = data_dict.get("type")
                backref_id = data_dict.get("backref_id")
                date_created = data_dict.get("date_created")
                last_accessed = date_created

                if date_created is None:
                    date_created = datetime.datetime.now()
                    last_accessed = date_created

                if (uid is not None) and (tYpe is not None) and (backref_id
                                                                 is not None):
                    user = dbUsers.objects.get(uid=uid)
                    user_watchlist = UserWatchlist(uid=user,
                                                   type=tYpe,
                                                   backref_id=backref_id,
                                                   date_created=date_created,
                                                   last_accessed=last_accessed)
                    user_watchlist.save()
                    result = {"status": True, "msg": "Data Saved"}
                    return Response(result)

                result = {"status": False, "msg": "UID  match"}
                return Response(result)

            else:
                result = {"status": False, "msg": "UID Does not match"}
                return Response(result)

            return Response(request.data)
        except firebase_admin._auth_utils.InvalidIdTokenError as e:

            result = {
                "status": False,
                "msg": e.default_message,
                "Expection Class Name": str(e.__class__.__name__),
                "Expection Class ": str(e.__class__)
            }
            return Response(result)
        except Exception as e:
            result = {
                "status": False,
                "msg": e.args,
                "Expection Class Name": str(e.__class__.__name__),
                "Expection Class ": str(e.__class__)
            }
            return Response(result)
예제 #28
0
    def authenticate_credentials(self, key):
        try:
            token = auth.verify_id_token(key)
            email = token['email']
            user = User.objects.get(email=email)
        except Exception:
            raise exceptions.AuthenticationFailed('Unable to authenticate.')

        if not user.is_active:
            raise exceptions.AuthenticationFailed('User inactive or deleted.')
        return (user, token)
예제 #29
0
 def has_permission(self, request, view):
     try:
         token = request.META['HTTP_AUTHORIZATION']
         decoded_token = auth.verify_id_token(token)
         uid = decoded_token['uid']
         print (uid)
         if request.method in permissions.SAFE_METHODS:
             return True
         return 'COHzLEpHu2YoySLDKdB4JbHQ2gX2' == uid
     except:
         raise PermissionDenied({"message": "You don't have permission to access"})
def verify_token_uid(id_token):
    cred = credentials.Certificate('path/to/service.json')
    default_app = firebase_admin.initialize_app(cred)
    # [START verify_token_uid]
    # id_token comes from the client app (shown above)

    decoded_token = auth.verify_id_token(id_token)
    uid = decoded_token['uid']
    # [END verify_token_uid]
    print(uid)
    firebase_admin.delete_app(default_app)
예제 #31
0
파일: main.py 프로젝트: ubuntu-prasad/Nodes
def create_node():
    """ Create a new Node """

    id_token = request.args.get('id_token')
    node_name = request.args.get('node_name')
    profile_pic = request.args.get('profile_pic')
    node_description = request.args.get('node_description')

    try:
        # validate node names
        if (re.match("^[A-Za-z0-9_]*$", node_name) == None
                or len(node_name) < 3):
            raise Exception('INVALID_NODE_NAME')

        if (profile_pic == None):
            profile_pic = "camera-placeholder.png"

        decoded_token = auth.verify_id_token(id_token)
        uid = decoded_token['uid']

        # request user must be in connected_users[]
        user_doc_ref = db_ref.collection(u'users').document(uid)
        node_coll_ref = db_ref.collection(u'nodes')

        node_coll_ref.add(
            {
                "name": node_name,
                "connected_users": [user_doc_ref],
                "posts": [],
                "profile_pic": profile_pic,
                "node_description": node_description
            }, node_name)

        # new node must be in connected_nodes[] in user
        user_details = user_doc_ref.get().to_dict()
        new_doc_ref = db_ref.collection(u'nodes').document(node_name)
        user_details.get('connected_nodes').append(new_doc_ref)

        # add details to connected_nodes_data (repeat data)
        user_details.get('connected_nodes_data').append({
            "name":
            node_name,
            "profile_pic":
            profile_pic,
            "node_description":
            node_description
        })

        user_doc_ref.update(user_details, option=None)

        return jsonify(operation="Create a new node", status="SUCCESS")

    except:
        return jsonify(status="FAILED")
예제 #32
0
def VerifyToken(token, uid):
    try:
        decoded_token = auth.verify_id_token(token)
        in_uid = decoded_token['uid']
    except Exception as e:
        print(str(e))
        return False
    if uid == in_uid:
        return True
    else:
        return False
예제 #33
0
def firebase_auth():
    id_token = request.json['auth_data']
    decoded_token = auth.verify_id_token(id_token)
    encoded_email = decoded_token['email'].replace('.', ',').replace('+', '%')
    gh_uid = decoded_token['firebase']['identities']['github.com'][0]
    authorized = is_token_authorized(gh_uid)

    if authorized:
        whitelist = get_whitelist_emails()
        if whitelist is None or not whitelist.get(encoded_email):
            get_whitelist_emails.delete()
            root.child(f'whitelist').child(encoded_email).set(True)

    return jsonify({
        "authorized": authorized
    })