Friday, 22 December 2023

How to Connect to Azure B2C using C#

 Below is the code related to how to connect to Azure AD B2C using B2CGraphClient. 


    1. Get Access Token using following approach : 

        

 this.clientId = clientId;

            this.clientSecret = clientSecret;

            this.tenant = tenant;


            // The AuthenticationContext is ADAL's primary class, in which you indicate the direcotry to use.

            this.authContext = new AuthenticationContext("https://login.microsoftonline.com/" + tenant);


            // The ClientCredential is where you pass in your client_id and client_secret, which are 

            // provided to Azure AD in order to receive an access_token using the app's identity.

            this.credential = new ClientCredential(clientId, clientSecret);


2.  Send Graph Request using below code : 


 // First, use ADAL to acquire a token using the app's identity (the credential)

            // The first parameter is the resource we want an access_token for; in this case, the Graph API.


            Microsoft.IdentityModel.Clients.ActiveDirectory.AuthenticationResult result = await authContext.AcquireTokenAsync("https://graph.windows.net", credential);

            //AuthenticationResult result = authContext.AcquireToken("https://graph.windows.net", credential);


            // For B2C user managment, be sure to use the 1.6 Graph API version.

            HttpClient http = new HttpClient();

            string url = "https://graph.windows.net/" + tenant + api + "?" + Globals.aadGraphVersion;

            if (!string.IsNullOrEmpty(query))

            {

                url += "&" + query;

            }


            Console.ForegroundColor = ConsoleColor.Cyan;


            // Append the access token for the Graph API to the Authorization header of the request, using the Bearer scheme.

            HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, url);

            request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", result.AccessToken);

            HttpResponseMessage response = await http.SendAsync(request);


            if (!response.IsSuccessStatusCode)

            {

                string error = await response.Content.ReadAsStringAsync();

                object formatted = JsonConvert.DeserializeObject(error);

                throw new WebException("Error Calling the Graph API: \n" + JsonConvert.SerializeObject(formatted, Formatting.Indented));

            }


            Console.ForegroundColor = ConsoleColor.Green;


            await response.Content.ReadAsStringAsync();

No comments:

Post a Comment

Enhancing Plugin Observability in Dynamics 365 with Application Insights

Over the past few weeks, we evaluated multiple approaches to send richer telemetry to Application Insights from our Dynamics 365 plugins. Th...