Q:

authentication in mobile app with azure functions

I am trying to develop a serverless backend for my xamarin app.  and for that I chose azure functions. 
Now I already know that Azure Mobile Apps provide an SDK for this purpose with which we can easily enable Authentication with multiple ways which are following
 1.  Azure Active Directiry
 2.  Facebook
 3.  Google
 4.  Microsoft
 5.  Twitter
Now I want to allow login with atleast 2 of these in my app, but I am not using azure mobile app as backend, instead I am using azure functions.  So how can I achieve the same result with serverless? 
Thanks in advance. 

A:

AFAIK, when using Easy Auth (Authentication/Authorization in App Service), the user would be directed to {your-app-service-url}/.auth/login/{provider} for logging with Server-managed authentication.  Users who interact with your web application through the web browser would have a cookie and they can remain authenticated as the browser your web application.  For other clients (e.g. mobile client), a JWT would be contained in the x-zumo-auth header, and the Mobile Apps client SDK would handle it for you. 
According to your scenario, you are trying to use user-based authentication with your function.  I did some test, you could refer to them:
Firstly, I created a HttpTrigger function wrote in C#, then set the Authorization level to Anonymous. 
return req. CreateResponse(HttpStatusCode. OK, req. Headers,JsonMediaTypeFormatter. DefaultMediaType);

Note: I just return all headers with the special headers specified by App Service Authentication / Authentication.  Some example headers include:

X-MS-CLIENT-PRINCIPAL-NAME
X-MS-CLIENT-PRINCIPAL-ID
X-MS-TOKEN-MICROSOFTACCOUNT-ACCESS-TOKEN
X-MS-TOKEN-MICROSOFTACCOUNT-EXPIRES-ON

For more details, you could refer to App Service Token Store. 
Then I go to Platform features and configure the Microsoft Authentication Provider under Authentication / Authorization.  For mobile client, just use the Mobile Apps client SDK for logging and invoke the function endpoint as follows:

In summary, you could use the Mobile Apps client SDK for authentication with your function app.  And you could configure the Authentication Providers as you wish, then for your mobile client you could set the related provider name when calling LoginAsync for logging.  For your function, you could check the X-MS-CLIENT-PRINCIPAL-IDP header and retrieve the current user info and token for the specific provider.