Can a C# console app be registered in Azure AD - azure

I have a console application that is currently being hosted in Azure in a worker role. I'm wanting to call some of the newer Microsoft API's that require you to have your application registered in Azure AD in order to get an application id to be used to get an OAuth token for the API.
As far as I know you can register Web Apps, Web Api's and native client apps in Azure AD.
Is it possible to register a console app in Azure AD? If not do worker roles have an application id? I have not seen where they do.

Yes, you can register your app. A console app without a user authenticating is known as a daemon application. Here are the guidelines for that: https://learn.microsoft.com/en-us/azure/active-directory/develop/active-directory-authentication-scenarios#daemon-or-server-application-to-web-api.
You can simply register the console app either as a Web App or native app (it doesn't really matter if there is no user interaction), and then give it some App-Only permissions so it can make the calls with the Client Credentials Grant Flow, using only its client id and client secret.
You should register it as a native application if you have a user signing in to it when it runs though. A console app is a native client app after all. And then you could be using delegated permissions instead of app permissions.

Related

MSAL Integration in React + .Net App For all Microsoft Users (Without registering or Inviting the User)

How to Integration MSAL in React + .Net App For all Microsoft Users (Without registering or Inviting the User)
I have implemented it for a specific tenant, but in that, I always need to register a user or invite a user for that user to access the Application, but I want all the Microsoft users to access the token, so that I can use that token to Login into the .net application.
• I would suggest you to please implement React JS web application running on Node.js in frontend and ASP .NET Core API application in the backend as well as deploy a Microsoft SQL server as a database server such that the user’s information should be stored in the database upon creation. Thus, as per your desired configuration that all the Microsoft users should be able to access the token and then you should be able to login to the backend .NET application, you should integrate Azure AD B2C tenant with your frontend react JS web application along with MSAL authentication as described in the below documentation. It also describes that you will have to register an application in Azure AD B2C for authentication purpose and integrate its details in the react app. Also, you will have to configure the user flows and the custom policies accordingly for ensuring that when the guest user logs into the React MSAL app, its details are stored in the Azure AD B2C tenant and from there, they can be exported to the SQL database.
https://learn.microsoft.com/en-us/azure/active-directory-b2c/configure-authentication-sample-web-app?tabs=visual-studio
• Once, the above has been done, ensure that the backend application is integrated with Azure SQL by delegating the application created in Azure AD B2C, the required permissions for that concerned Azure resource (SQL database) for allowing to access the same and retrieve the user details from it. Thus, in this way, you can configure your application accordingly. Further which, you can use the user details to generate a token and login to the desired application.
Kindly refer the below documentation link for more details: -
https://www.codeproject.com/Articles/1121503/Integrate-Azure-AD-B-C-with-ASP-NET-MVC-Web-App-Pa
P.S.: - Please note that a token generated for a user for that particular app is for a limited time and may be, you cannot also reuse it.
Also, find the below community thread for your reference: -
Where to implement Azure AD B2C with React frontend and ASP.NET Core 6 backend

How to configure Azure Web App to Web App authentication?

I have two Azure Web Apps, one is a website and acting as the front-end, the other one is an API and acting as the backend. I would like to add authentication to this solution so only the front-end can access the backend. To do this, I've configured AAD authentication on the backend Web App with the express option that creates a new Azure AD application configured with the correct reply URL, API permissions (User.Read), etc. When I then navigate to the backend Web App URL, I need to sign-in with my Azure AD credentials.
Which steps do I need to take to restrict that so I as an user cannot login and only the front-end Web App can authenticate to the backend API?
For example, I can set the "Authorized client applications" on the Azure AD application of the backend API. However, I need to have an application ID to add an authorized client and I would like to use the Managed Identity of the front-end Web App for this, not a new and additional Azure AD application.
Any idea how to do this?
This is weird, if the login screen still appears, there is a problem with your code configuration, because the client credential flow does not involve user interaction.
I found a useful sample for your reference, this sample application shows how to use the Microsoft identity platform to access the data from a protected Web API, in a non-interactive process. It uses the OAuth 2 client credentials grant to acquire an access token, which is then used to call the Web API.

Authenticating a user who logged in in an external app within a web api

I am using Microsoft Authentication (Azure AD) to log in a user to an app.
I have a separate node.js API which I'd like an authenticated user to call but as it is an external API how do I check that the user who is requesting a resource is authenticated?
What is the flow, are there any good Node.js resources?
You need to protect the node js api with Azure AD. After that, you can implement a client(the app you used to login) that is able to pass authentication tokens to the API.
Here is an sample which contains a web API running on ASP.NET Core 2.0 protected by Azure AD. The web API is accessed by an ASP.NET Core 2.0 web application on behalf of the signed-in user.
The scenario is the same as yours, but I only find .net samples.

Creating an AD application using .net

I am trying to create an AD application using .net, I am able to create it with Microsoft.Azure.ActiveDirectory.GraphClient. But why I am supposed to create a native AD Application in the Azure portal prior to creation of AD Application in .net
My question is, will I be able to create a AD application without client Id of a native app?
In short no.
When you create application you need to require Delegate permission or Application permission. To assign the permission to user, you need to use app to act as an agent.
You could use the following code to get the ad token, you need to give the client id of the native app which you have granted delegate permission. You also could grant Application permission to a Web app/API which you use client id and client secret to acquire token.
var result = await authenticationContext.AcquireTokenAsync(graphResourceId, clientId, new UserPasswordCredential(userName, password));
BTW, Azure portal is an enterprise application.So, when we login and create Azure AD App, it also get the client id of azure portal.
You can simply publish your native .NET application using AAD Application Proxy. There are a number of samples that show how to do this. You need to publish your application through the application proxy and register it as a Native app.
This document details all of the steps for this: https://learn.microsoft.com/en-us/azure/active-directory/manage-apps/application-proxy-configure-native-client-application

Authentication for web api using azure AD

I need to implement authentication for azure web api using azure active directory.
client app(which consumes webapi) may or may not be in azure. how i need to authenticate user, where i should generate token if my app is not in azure(if it is IOS app). authentication should work in all cases even if client app is in azure or not.
Please let me now the best procedure to implement authentication.
You need to define the client app in Azure AD as a native app in the case of a mobile app. Then you define the API there, and add your client permissions to access it. You can optionally customize the available permissions through the API app's manifest in Azure AD. Then when your mobile app opens, you would have to authenticate with Azure AD, and then request an access token for the API. That you can then use to authenticate requests.
I can't answer this question in too great detail because it is quite a large topic and how it is done also depends on your platform. There is a sample app that you can check which does exactly what you want. The whole list of examples for native apps can be found here.
App Service to use different authentication providers Azure Active Directory,Facebook,Google,Microsoft,Twitter.
We can set any type of Authentication/Authorization in the Azure Portal.More info about how to use authentication for API Apps in Azure App Service, please refer to document.
By default, App Service provides authentication but does not restrict authorized access to your site content and APIs. You must authorize users in your app code.

Resources