I’m an Umbraco MVP for 2021! 🎉
As part of the Unicore project, Rock Solid Knowledge has been helping Umbraco HQ migrate to ASP.NET Core. My contributions have been on the identity side of the project, migrating the backoffice user store to use ASP.NET Core Identity, while my colleague Emma Garland worked on the member’s user store later in the year.
In recognition of my contributions, Umbraco HQ has awarded me with an Umbraco MVP title for 2021.
What is Umbraco?
Umbraco is a Content Management System (CMS) for ASP.NET. It’s known as the “friendly CMS,” and they back this up with a strong focus on community.
As far as CMS’s go, Umbraco isn’t too shabby at all, and it’s my standing recommendation if you want a CMS. It’s a CMS you host within your own ASP.NET website, so as a result, it’s open to extensive customization. Many of Rock Solid Knowledge’s customers have found themselves using Umbraco at some point.
The name “Umbraco” comes from “Unbrako-nøgle”, which is Danish for Allen key. So, I like to think this award means that I am a very important Allen key.
Unicore? 🦄
Unicore is Umbraco’s efforts to moving from .NET Framework to .NET Core. It’s a significant development effort, with Umbraco HQ and community members extracting Umbraco from ASP.NET and all of the legacy that comes with it and moving it to ASP.NET Core.
My colleague, Umbraco MVP Emma Garland, was one of the community members selected to be part of the Unicore team. After learning more about the roadmap for Unicore, Rock Solid Knowledge offered to lend their identity expertise for the migration to ASP.NET Core Identity.
My contributions
My initial contribution was an in-place upgrade from ASP.NET Identity 2 to ASP.NET Core. During this upgrade, I maintained the use of .NET Framework as, at the time, Umbraco did not have a .NET Core host. Since this was my first deep dive into the internals of Umbraco, I wanted to be able to run an Umbraco website and smoke test the functionality I was changing. By the end of this pull request, I had removed all references to ASP.NET Identity 2 and replaced them with ASP.NET Core Identity. In theory, you could have merged this pull request into Umbraco v8!
For my second pull request, I switched the code from .NET Framework to .NET Core. This update included moving to the .NET Core DI container and removing the adaptors I built for ASP.NET Core Identity to run with OWIN/Katana.
Shannon Deminick, from Umbraco HQ, then ran with this framework to create an approach for ASP.NET Identity to handle both Umbraco members and backoffice users – something that proved trickier than expected.
My colleague, Emma Garland, then migrated the member’s user store from ASP.NET Membership to ASP.NET Core Identity. I helped out with planning, regular meetings, and some reviews.
My final contribution handled the migration of member’s passwords from a custom HMAC-SHA using an extended salt as the key to the default ASP.NET Core password hasher. This implementation currently assumes that you are using the default algorithm of PBKDF2, but you could switch it out for something better.
Future contributions
For now, we can all look forward to the release of Umbraco v9 and the use of ASP.NET Core. From myself, you can expect a few more Umbraco-related articles on identityserver.com and rocksolidknowledge.com, including some detail about our approach for moving a large codebase from ASP.NET Membership and ASP.NET Identity 2 to ASP.NET Core.
To learn more about ASP.NET Core Identity, check out my Pluralsight course “ASP.NET Core Identity Deep Dive”. Otherwise, check out the articles I have since written on Umbraco.