Editing the value of a custom attribute via Azure blades or programmatically in Azure AD B2C - azure-active-directory

Security Groups (Application Roles) are not currently supported in Azure AD B2C and it is the highest requested feature on the Azure AD B2C Feedback:
https://feedback.azure.com/forums/169401-azure-active-directory/suggestions/10123836-get-user-membership-groups-in-the-claims-with-ad-b
Other threads are recommending Custom Attributes to simulate this:
https://feedback.azure.com/forums/169401-azure-active-directory/suggestions/31997947-support-application-specific-roles-in-b2c
I added, via Azure blades UI, a Custom Attribute of type String and named it RoleAttr and assigned it against the B2C_1_SignUpSignIn User Flow (Policies) and added it to the Application claims.
For testing purposes, all done via UI, if I add this attribute to User attributes, when a user is signing up, he/she is getting a new field called RoleAttr, which means it is working (I guess?!). But this is not my intention as this value should be assigned by an admin and not by the user, my intention is to get it as part of the claims.
1 - How can I edit this value from Azure blades UI (I can only see the Built-In attributes, not the custom ones)?
2- Can I do this programmatically (PowerShell, C#, GraphAPI, etc...)? Say by creating a tool that will act on behalf of an admin and manipulate a user object using his/her Object Id?

1) Currently, you can't edit the custom attributes (a.k.a. the extension properties) for a user object via the Azure portal.
2) You can manage the extension properties for a user object using the Azure AD Graph API with the Azure AD B2C tenant.

Related

Manage custom attributes for user and group in Azure AD

I have an app that is implementing SCIM 2.0.
I have connected this app to my Azure AD and I am succeeding to provision users and groups to my app from from Azure AD.
I want to add a custom attribute and manage the value of that attribute in Azure AD for every user or a group and add that data to my provisioning mapping - to send it to my app as part of the provisioning process.
I can't find where in Azure AD I can do that.
I have tried to add a custom security attributes, I have assigned it to my app. But when I go to the provisioning mapping - the attribute is not in the list of source attributes that I can choose from.
I have also tried to add a custom attribute (which I was able to choose in the provisioning mapping), but I did not find where I can manage the value of this attribute to a user in the Azure AD .It looks like it can only be filled in a user flow (login with SSO) - which is not my case.
I did not find a way to create a custom attribute for a group and manage its values in the Azure AD and then add to provisioning group mapping.
I saw that there are extension attributes, but where in Azure AD I can enter data to these attributes for a specific users or groups?
Can anyone help?
Is there a completely different way to add extra information to user / group and send it from Azure AD to my app using SCIM?
• When you provision an application in Azure AD through SCIM (System for Cross-Domain Identity Management) for the purpose of provisioning the Azure AD users to the ‘Enterprise application’ created in Azure AD tenant, you enter the URL of the application’s SCIM endpoint as ‘https://api.contoso.com/scim/’ and since it requires an OAuth bearer token from an issuer other than Azure AD as it can validate this token issued by the Azure AD itself. Therefore, in the ‘Mappings’ section of the ‘Provisioning’ section for the Azure AD enterprise application, you have the option for reviewing the attributes that are synchronized from Azure AD to the SCIM provisioned app. These attributes are selected as ‘Matching’ properties and are used to match the users and groups in your app for update operations.
Also, to add the extension attributes to the user in Azure AD for them to be exported to the SCIM provisioned application, you will need to create a dynamic group with members added to them via a dynamic query as shown below. Before that, you will have to synchronize the extension attributes through Azure AD connect utility from the on-premises AD that were created there already. Then, these already created extension attributes can be selected to be mapped with the SCIM provisioned app as below: -
Complete the expression to suit your requirements. As above, the rule is set to ‘(user.extension_9d98ed114c4840d298fad781915f27e4_division -eq "Sales and marketing")’.
• Secondly, you can also create extension attributes for users that are to be synchronized from Azure AD to the SCIM provisioned application through Microsoft Graph API as shown below: -
First, create a ‘GET’ request to the object ID of the SCIM provisioned application to check the request sent status success. Then, send a ‘POST’ request to the object ID of the SCIM provisioned application as shown below with the custom extension attribute in the body of the request: -
Now, since this custom extension attribute is created without any value, you will have to update this attribute with a value so that this attribute is synchronized to the SCIM provisioned application accordingly as shown below: -
Thus, as shown above, you can add custom extension attributes to any Azure AD user and synchronize these attribute values to the SCIM provisioned app.
For more detailed information on the above, please refer to the below links: -
https://learningbydoing.cloud/blog/getting-started-with-azuread-extension-attributes/#:~:text=Go%20to%20the%20Azure%20AD,settings%20default%20and%20click%20Register.
https://learn.microsoft.com/en-us/azure/active-directory/hybrid/how-to-connect-sync-feature-directory-extensions

How to update User Attributes in Azure AD B2C from ASP.NET Core?

What is the best way to programmatically change the value of an Azure AD B2C custom attribute without using user flows. Should Azure AD Graph be used or the new Microsoft Graph? I was not able to find good documentation for doing this.
For Azure AD B2C custom attribute, you should use Azure AD Graph.
The custom attribute is shown in AAD Graph like this format: extension_{appId}_{customAttribute}.
So firstly you need to get the appID for it. You can use the applications endpoint with a filter to get the application ID: GET https://graph.windows.net/myorganization//applications?api-version=1.6&$filter=startswith(displayName, 'b2c-extensions-app').
You can get the appID of the extension app. And now you know what the custom attribute name is: extension_{appId}_{customAttribute}.
Then you could call this endpoint to update the custom attribute.
PATCH https://graph.windows.net/myorganization/users/userObjectId?api-version=1.6
{
"extension_{appId}_{customAttribute}": "value"
}

configure custom attributes in AAD for Saas Applications

I'm currently trying to configure Azure Ad for user provisioning in a Salesforce Sandbox. I'm using a personal dev org and a trial Azure account to make this work.
I've been able to map attributes and it works for most of them, except one. ManagerID.
I'm trying to replicate the Azure AD manager information into Salesforce's managerID field using an attribute reference. However it doesn't seem to work.
Has anyone here been completing this kind of setup previously and would be able to point me to the correct Attribute expression to be mapped/referenced on the Azure AD side?
The default mapping is from Salesforce->ManagerId to AAD->Manager, where AAD-> Manager is a reference to User.
The field in Salesforce used for matching is the FederationIdentifier, which corresponds to AAD-> User.userPrincipalName
The logic would be that if I'm doing a reference to the AAD User, I would expect AAD to fetch that manager's UPN in AAD and pass it back to the SCIM interface to be able to match it on the Salesforce side (since it's mapped to the FederationIdentifier).
I'm also trying to force the reference of "Manager" on the AAD side to pick the User.UserPrincipalName but it seems to always bring it back to User.
Anyhow, I'm a bit fishing here and wondering if there is someone with whom I can share the settings in such way that I can compare how it's been done in a successful implementation.

Azure B2C Claims Based Authentication and Custom Claims

How does one implement user groups to protect the APIs using .net core 2.0 and Azure AD B2C?
Most of my functions are available for anyone to use, but there are a handful that are for administrators only (e.g. delete account, list all users, etc.).
In Azure one can set up a bunch of custom claims, but the user seems to have permission to edit these claims.
So, for example, I could set up an attribute which is 'Group' and set the value to 'User' or 'Administrator', but it appears to me the user could edit this attribute, thus making the whole scheme worthless.
How?
Custom attributes are not editable by the user unless they are exposed in a B2C policy (like a sign-up or edit policy)
You can set custom attributes through the Azure AD Graph API.
or
You can set custom attributes by sending a JWT to B2C with Custom Policies. One example is here.

Custom attributes not shown in user profile in Azure AD B2C

I have added custom attributes during Sign-up and added the same in the application claim in Azure AD B2C management portal.
I was expecting these custom attributes to be added as part of the user profile who signed-up using their social identity provider.
Could someone help me on getting these custom attributes in the user profile screen of Azure AD B2C?
Besides creating the custom attribute, you need to add it to your policy's Attributes. Optionally you can also configure the attribute as an application claim.
You do this in the "Sign-up attributes" or "Edit profile attributes" section while editing you policy.
Keep in mind this is different from adding the attribute to your application claims.
While the former shows it in the UI allowing the user to edit the attribute, the latter sends the value of that attribute to the application in the id_token.
See the use a custom attribute in your policy documentation for more info.
It is also worth noting that at this time, custom attributes do not show up in the Azure portal's Users & Groups blade. As an admin, you can only view and update those using the Graph. You can request this as a feature in the Azure AD B2C feedback forum

Resources