How to get cookie in cloud functions from my firebase web app - reactjs

I have a web app hosting in firebase and i have a single sign on login where i set requestId cookie in firebase cloud functions domain.
Now after login in single sign on i need to need that requestId cookie in my firebase web app.
I tried getting the cookies using document.cookie
also i tried using react-ccokie I am getting only the cookies stored in web app.
Is there any API for getting cookies from firebase cloud functions
Note: The third party login app is Ping Identity
I am using react 16.13.1 and firebase verion 7.16.1

Related

Django OAuth Authentication

I built an app (Django backend, React frontend) that whenever a client login it will generate JWT authentication. React will store the access token and client can use it to access Django backend database.
Then I want to add in social login feature (Google) so I will get back access token from that as well. However, this access token is different from the JWT access token generated before, so I wonder how can I integrate both ways of logging in a user smoothly on both Django and React?
For JWT I use djangorestframework-simplejwt
For social login I use django-allauth
I can run each individual way perfectly on React, but I don't know how to keep both the installations of JWT and allauth in Django settings.

Firebase App with Cloud functions Cookie not being set on firebase hosting

Have a firebase app (server side React) that receives a http only cookie from a firebase functions Rest API as part of the response. This works fine on localhost but when i publish to firebase hosting no cookie is received. I'm thinking its either because the FB hosting is https or it is CORS related that the cookie is not being set.
Insight and how to fix would be helpful.
Cheers

Oauth for authorization JWT for authentication for an app using DRF and cloud functions

I'm building a web app with Wagtail as back-end, running on app engine, cloud functions doing micro-services and triggered via http.
I want to let my users register and authorize using social apps and classic login-password and get a JWT token from Wagtail App. Then, the token will be used to authenticate users both on cloud functions and Wagtail back-end.
How do I provide the user with JWT tokens if he/she authorizes with OAuth?
Is my approach correct? Any suggestions on how this should be done in the proper way?
The best solution I found so far is to use firebase auth. In python I verify token like that:
from firebase_admin import auth
decoded_token = auth.verify_id_token(id_token)
uid = decoded_token['uid']

Firebase Admin SDK verifySessionCookie does not authenticate user for Firebase Storage

I am using session cookies as especified in this link in the Firebase docs. Using the session cookie I am able to authenticate the user in the server for Server Side Rendering of protected routes of my React Web App. But the docs recommend setting persistance of client side authentication to none in order to handle persistance with the cookie. I get the point of that, but the problem is that my app also uses Firebase Storage, and if a user logins, then refreshes the page, verifySessionCookie runs in the server, app get user data BUT user is not authenticated for Firebase Storage and cannot upload files to it.
Is there a way the Admin SDK can verify the session cookie and authenticate the user for storage access?

How to use google authentication for an angular web app and a .net web api hosted on azure

I have an angular web app talking to a c# .net web api back end.
They are both hosted on azure app services.
Azure app services offers a suite of authentication services and I've chosen to use google auth.
I've got my google client id and secret setup in azure google auth and my web app correctly shows and prompts me for my google credentials.
My problem now, is that i need my web api back end to authenticate the web app google token. I couldn't find any articles or tutorials that demonstrates the following:
How to get and send the token to the web api? I've read that azure app service should automatically inject the necessary auth headers but any calls to my api do not include those headers. Should i manually call auth/me and add them to the request header?
How do i get my web api to authenticate the details from the request header with google auth? Do i need a separate client id for the web api or should i re-use the web app client id?
Cheers!
According to your description, I assumed that you are using the built-in Authentication / Authorization provided by Azure App Service.
AFAIK, App Service Authentication (Easy Auth) provides two flows: client-managed and server-managed flow. For the server-managed flow, the server code manages the sign-in process for you, and your backend would directly receive the token from the relevant identity provider (e.g. Google, AAD,etc.), then both generate a authenticationToken for browser-less apps and AppServiceAuthSession cookie for browser apps. Details you could follow Authentication flow.
For your angular web app, you could just use server-managed flow, after user successfully logged, you need to call https://<your-angular-app-name>.azurewebsites.net/.auth/me to retrieve the google access_token, then send the following request against your web api endpoint for retrieving the authenticationToken as follows:
POST https://<your-webapi-app-name>.azurewebsites.net/.auth/login/google
Body {"access_token":"<the-google-access-token>"}
After successfully retrieved the authenticationToken from your Web API endpoint, you could send the following subsequent requests for accessing your APIs:
GET https://<your-webapi-app-name>.azurewebsites.net/api/values
Header x-zumo-auth:"<authenticationToken-generated-by-your-webapi>"
Moreover, you could also use client-managed flow in your angular web app, you may need to directly contact with your identity provider (Google) to retrieve the access_token in your client via Auth0 or google-signin or other third-party libraries. Then you may need to both send request to your angular web app and Web API web app for retrieving the authenticationToken as the above request sample.
Do i need a separate client id for the web api or should i re-use the web app client id?
Per my understanding, you must use the same google application. For AAD authentication, you could configure a AAD app with the access permissions to another AAD app.

Resources