I'm making good progress on the Azure B2C User Management App that I'm building. I've been really thinking about how to roll out the app for the initial release and think that the best way to do it is to provide a published .Net Core MVC website. Users will be able to download the compiled website with instructions on how to set up the site and get it working right away.
The completely published website feels like the simplest way to get the first version of the app out the door. I'm not sure if this is going to be the most useful for people, there is a little configuration that needs to be done on the server side to enable the app to interact with the end user's Azure B2C tenant. But once the keys are configure, the app itself doesn't require any more configuration as there is no backing database with it. It uses the client id and client secret of a registered app in the Azure B2C tenant for each request to authenticated and authorize itself into the client's tenant.
The initial release of the app will be very simple and will solve the one the problem that lead me to develop the app: You can view and edit custom user attributes and custom extension attributes from a UI instead of having to spin up a new MS Graph API instance every time you want to view or update your B2C users. The interface will be very simple and consist of three screens initially. Here are the screen shots of the three different screens that a user will initially encounter.
- View a list of all users in the B2C tenant
- View the details of a user
- Edit the details of a user - including the custom attributes and external properties that are not either viewable or editable in the Azure Portal.
Alongside the out of the box user properties provided by Microsoft.Graph.Models.User I created a section called Custom Attributes. Each custom attribute of the tenant is listed here and is editable. When the user clicks Save Changes all these values are posted back to the Azure Portal.
Here you can see the Is Admin and Role custom user attribute/extension property. Speaking of, I can't figure out the difference between user attribute/extension property. They both seem to refer to the same underlying object but in the documentation I've read seem to be used interchangeably.
The MVP is ready to start testing with beta testers but I'm not sure how I want to roll this out just yet. Does it make sense to publish the compiled website to my e-commerce store with a set of instructions on how to install and set up the IIS instance? I'm not sure, it makes sense to me and I'm eager to get the first version out to test how people respond to this feature. Over the next couple of days I'm going to think about a rollout strategy that makes sense and will get the app into the hands of people who can give me some real feedback.