Skip to main content

Adding Entra ID Auth to a Blazor App

I wanted to take the time to write up this article since I found it useful when working on Blazor Apps. Althought this is not Sitecore related, I think it will be useful if we need to build an admin .NET portal. Additionally most organizations already have Entra ID if they use Microsoft apps and building Entra ID Authentication wont add costs like other Authentication methods would.
To get started make sure the following packages are available (using NuGet) in your solution.



In your Program.cs file, add the following


In my example, I am going to put my entire application behind the Authentication, except the home page. So users cannot get to any page in the application un-authenticated except the home page.

In your App.razor file, add the following (surround your existing Routes with CascadingAuthenticationState)


In your Home.razor file, add the following


Add a new Login.razor file with the following content


Lastly in your appsettings.json file add the following (or add this in your environmental variables for production apps)


Note:
You get the TenantId and ClientId by going to your Azure Portal Microsoft Entra ID and registering a new App. Once you register a new app you would note down the ClientId and use it in your application And lastly to test this out, make sure that you have the right redirect urls added to the list of "Redirect URI's." for the new app that you created. This is found by going to the Authentication section of your new App in your Azure portal. For example the following are ones that are common.



That's it. Simple way to add secure Entra ID Authentication to your Blazor App.

Comments

Popular posts from this blog

Create Object XML while Debugging in VS

 There are times when you put breakpoints in Visual studio and read object values within Visual Studio. This is all good if you are doing some debugging. But if you want to save an object like a Json object in Visual studio there isn't a straightforward way to do that. I found this piece of code that I copied and pasted in the Immediate Window in Visual Studio and was able to save the object as an XML file. (new System.Xml.Serialization.XmlSerializer(YourObject.GetType())).Serialize(new System.IO.StreamWriter(@"c:\tmp\YourObject.xml"), YourObject) Happy Sitecoreing!

Sitecore: Get list of logged in users

I had a deployment today and wanted to find a list of users who were logged into the Sitecore admin site. This was mainly so that I can contact them and let them know that a deployment was going to happen. I found the following link very useful as it gave me exactly what I was looking for. A list of users that were logged in and I contacted them. It also has the ability to Kick off users! http://{YourWebsite}/sitecore/client/Applications/LicenseOptions/KickUser Note: You can only see other users in this list if you have the right administrator permission. Logging in with a lower access level user only gave me the logged in user and no one else on the list.

GlassMapper

 How GlassMapper works  Glass Mapper is an object relational mapping (ORM) tool in Sitecore. It maps Sitecore items to strongly-typed classes. This makes it simple to access Sitecore data within C# code. Without an ORM, Sitecore developers would need to write and manage a lot of mapping code.  Below are example files that you can use. You have an interface class file, a class file that implements the interface and lastly you can use this in your cshtml file.  That's it. Happy Sitecoreing! IMySitecoreItemName class file namespace Your.NameSpace { [SitecoreType(TemplateId = Templates.MyTemplate.IdString, AutoMap = true)] public interface IMySitecoreItemName : IMySitecoreModel { [SitecoreField(FieldId = Templates.MySitecoreItem.Fields.MyField1)] string StringFieldName { get; set; } [SitecoreField(FieldId = Templates.MySitecoreItem.Fields.MyField2)] bool BoolFieldName { get; set; } } } Use it on your .cs file ...