Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Is Firebase's built-in authentication able to be used on a 3rd party server?

I'm looking to create a game server backend for a game I'm creating. We're currently using Firebase for handling of data and ads, and Firebase has built in authentication. Is it possible to have a user log into our app via Firebase's auth system, then confirm the user's authentication when they connect to the game server to ensure it's who they say they are?

Basically, after someone logs into our firebase, can we use that authentication information for a separate server, and what protocol/method would need to be used (if there's a specific one)

like image 533
cameronlund4 Avatar asked May 25 '16 01:05

cameronlund4


People also ask

What is Firebase authentication and how does it work?

Firebase Authentication is primarily used to identify users of your app in order to restrict access to other services, like Cloud Storage. You can also use the service to identify these users on your own server. This lets you securely perform server-side logic on behalf of users that have signed in with Firebase Authentication.

Why do I need to identify the currently signed-in user on Firebase?

If your Firebase client app communicates with your backend server, you might need to identify the currently signed-in user on your server so you can perform server-side logic on their behalf.

How do I integrate external user systems with Firebase?

You can integrate an external user system with Firebase. For example, you may already have a pre-existing user database or you may want to integrate with a third-party identity provider that Firebase Authentication doesn’t natively support. To do this, you can create custom tokens with arbitrary claims identifying the user.

How does the firebase admin SDK work?

Follow the Admin SDK setup instructions for more information on how to initialize the Admin SDK with a service account. When a user or device successfully signs in, Firebase creates a corresponding ID token that uniquely identifies them and grants them access to several resources, such as Firebase Realtime Database and Cloud Storage.


1 Answers

I've figured out the two steps you need to get the information required to auth, one clientside and one serverside. Note: the following examples are for the Java apis, but you can use any of firebase's equivalents.

Clientside: In the Firebase-Auth package, there's the FirebaseUser object. This contains information about their auth state, unique details, etc. There is a method here called getToken(), which will grab your token for the current authentication. Once you have this, you want to send it to the server when you need to auth.

Serverside: On the server, there's a FirebaseAuth object. Once you get the token from the client, you can use verifyIdToken(), which will confirm this is a valid token and give you the details about the user when you get the result. I suggest cross-checking the UUID against one a client sends, to just confirm someone didn't get their hands on a token and send a random ID.

Hope this helps.

like image 57
cameronlund4 Avatar answered Oct 11 '22 09:10

cameronlund4