0

I have an existing B2C app that I want to give graph access to.

I set this up previously but now want to replicate it but everything i can find is for new apps. I ysed the older graph but i think the article I used has been moved as everything is talking about the new Graph api

Is there a specific article for this, also if anyone has seen an article that describes the process from moving from Azure graph to Microsoft Graph (the new version) for a B2C app that would be great

Thanks

whatisthejava
  • 481
  • 3
  • 12

2 Answers2

1

Register the application for the Graph API

In addition to registering the application in the B2C directory, we must also create an application registration for the graph API. The three key/id values you will need are the tenantId, ObjectId, and AppPrincipalId.

To get the tenantId, log into the azure ad b2c directory in the new portal.

https://portal.azure.com/

Be sure you have the correct directory selected after you login (top right corner).

Click on the help button (a question mark inside a circle) near the top right corner of the page. In the menu that appears, click the "Show diagnostics" option. This will display a JSON formatted output in a new popup/window. Look for the "tenants" array and find the entry with the display name of the directory you wish to register with the application. The "id" attribute of that entry is the tenantId.

Example:

{
  "clientSessionStartDate": {
  //stuff will be here ...
  },
  //
  // more shtuff you don't care about will be here ...
  //
  "tenants": [
    {
      "id": "SomeUUIDwithlike36charactersSometime",
      "domainName": "yourtenantname.onmicrosoft.com",
      "displayName": "displanynameoftenant",
      "isSignedInTenant": true
    },
    // ... snippity lemon
  ]
  // ... snip some more
}

You will also need a unique application Secret and AppPrincipalId to be generated for the new application.

Also, to set the correct permissions for the application, you will need its "ObjectId".

The process for registering the application and generating those values is more complicated, and requires a special module for PowerShell and the online login module to be downloaded and installed.

Also, be sure you have the latest version of PowerShell installed for your system, or you will not be able to use the azure module.

Sign-In assistant: https://www.microsoft.com/en-us/download/details.aspx?id=41950 Azure AD PowerShell Module: http://go.microsoft.com/fwlink/p/?linkid=236297

Create the application registration with PowerShell

This next section is an almost verbatim copy-paste fo the documentation.

https://azure.microsoft.com/en-us/documentation/articles/active-directory-b2c-devquickstarts-graph-dotnet/

After you install the PowerShell module, open PowerShell and connect to your B2C tenant.

> $msolcred = Get-Credential

After you run Get-Credential, you will be prompted for a user name and password, Enter the user name and password of your B2C tenant administrator account.

> Connect-MsolService -credential $msolcred

Before you create your application, you need to generate a new client secret. Your application will use the client secret to authenticate to Azure AD and to acquire access tokens. You can generate a valid secret in PowerShell:

> $bytes = New-Object Byte[] 32
> $rand = [System.Security.Cryptography.RandomNumberGenerator]::Create()
> $rand.GetBytes($bytes)
> $rand.Dispose()
> $newClientSecret = [System.Convert]::ToBase64String($bytes)
> $newClientSecret

The final command should print your new client secret. Copy it somewhere safe. You'll need it later. Now you can create your application by providing the new client secret as a credential for the app:

> New-MsolServicePrincipal -DisplayName "My New B2C Graph API App" -Type password -Value $newClientSecret

Example output:

DisplayName           : My New B2C Graph API App
ServicePrincipalNames : {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}
ObjectId              : xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
AppPrincipalId        : xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
TrustedForDelegation  : False
AccountEnabled        : True
Addresses             : {}
KeyType               : Password
KeyId                 : xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
StartDate             : 1/1/2017 1:33:09 AM
EndDate               : 1/1/2017 1:33:09 AM
Usage                 : Verify

If you successfully create the application, it should print out properties of the application like the ones above, but with a mix of alpha-numeric characters. You'll need both ObjectId and AppPrincipalId, so copy those values, too.

You will also need the tenant ID of the B2C directory.

After you create an application in your B2C tenant, you need to assign it the permissions it needs to perform user CRUD operations. Assign the application three roles: directory readers (to read users), directory writers (to create and update users), and a user account administrator (to delete users). These roles have well-known identifiers, so you can replace the -RoleMemberObjectId parameter with ObjectId from above and run the following commands. To see the list of all directory roles, try running Get-MsolRole.

> Add-MsolRoleMember -RoleObjectId 88d8e3e3-8f55-4a1e-953a-9b9898b8876b -RoleMemberObjectId <Your-ObjectId> -RoleMemberType servicePrincipal
> Add-MsolRoleMember -RoleObjectId 9360feb5-f418-4baa-8175-e2a00bac4301 -RoleMemberObjectId <Your-ObjectId> -RoleMemberType servicePrincipal
> Add-MsolRoleMember -RoleObjectId fe930be7-5e62-47db-91af-98c3a49a38b1 -RoleMemberObjectId <Your-ObjectId> -RoleMemberType servicePrincipal

You now have an application that has permission to create, read, update, and delete users from your B2C tenant.

Pytry
  • 6,044
  • 2
  • 37
  • 56
0

I totally forgot this great answer exists and this is how you do it

Authorize By Group in Azure Active Directory B2C

whatisthejava
  • 481
  • 3
  • 12