Click here to Skip to main content
14,210,491 members

Dominic Burford - Professional Profile



Summary

Follow on Twitter LinkedIn      Blog RSS
6,499
Author
1,901
Authority
8,550
Debator
8
Editor
95
Enquirer
57
Organiser
2,484
Participant
I am a professional software engineer and architect with over eighteen years commercial development experience with a strong focus on the design and development of web and mobile applications.

I have experience of architecting scalable, distributed, high volume web applications that are accessible from multiple devices due to their responsive web design, including architecting enterprise service-oriented solutions. I have also developed enterprise mobile applications using Xamarin and Telerik Platform.

I have extensive experience using .NET, ASP.NET, Windows and Web Services, WCF, SQL Server, LINQ and other Microsoft technologies. I am also familiar with HTML, Bootstrap, Javascript (inc. JQuery and Node.js), CSS, XML, JSON, Apache Cordova, KendoUI and many other web and mobile related technologies.

I am enthusiastic about Continuous Integration, Continuous Delivery and Application Life-cycle Management having configured such environments using CruiseControl.NET, TeamCity and Team Foundation Services. I enjoy working in Agile and Test Driven Development (TDD) environments.

Outside of work I have two beautiful daughters. I enjoy cycling, running and taking the dog for long walks. I love listening to music and am a fan of Rush and the Red Hot Chilli Peppers to name a few.

 
Articles 13 (Prolific)
Tech Blogs 0
Messages 1,071 (Master)
Q&A Questions 0
Q&A Answers 28
Tips/Tricks 14
Reference 0
Comments 75

Reputation

For more information on Reputation please see the FAQ.

Privileges

Members need to achieve at least one of the given member levels in the given reputation categories in order to perform a given action. For example, to store personal files in your account area you will need to achieve Platinum level in either the Author or Authority category. The "If Owner" column means that owners of an item automatically have the privilege. The member types column lists member types who gain the privilege regardless of their reputation level.

ActionAuthorAuthorityDebatorEditorEnquirerOrganiserParticipantIf OwnerMember Types
Have no restrictions on voting frequencysilversilversilversilverAdmin
Bypass spam checks when posting contentsilversilversilversilversilversilvergoldSitebuilder, Subeditor, Mentor, Protector, Editor, Staff, Admin
Store personal files in your account areaplatinumplatinumSitebuilder, Subeditor, Supporter, Editor, Staff
Have live hyperlinks in your profilebronzebronzebronzebronzebronzebronzesilverSubeditor, Protector, Editor, Staff, Admin
Have the ability to include a biography in your profilebronzebronzebronzebronzebronzebronzesilverSubeditor, Protector, Editor, Staff, Admin
Edit a Question in Q&AsilversilversilversilverYesSubeditor, Protector, Editor, Admin
Edit an Answer in Q&AsilversilversilversilverYesSubeditor, Protector, Editor, Admin
Delete a Question in Q&AYesSubeditor, Protector, Editor, Admin
Delete an Answer in Q&AYesSubeditor, Protector, Editor, Admin
Report an ArticlesilversilversilversilverSubeditor, Mentor, Protector, Editor, Staff, Admin
Approve/Disapprove a pending ArticlegoldgoldgoldgoldSubeditor, Mentor, Protector, Editor, Staff, Admin
Edit other members' articlesSubeditor, Protector, Editor, Admin
Create an article without requiring moderationplatinumSubeditor, Mentor, Protector, Editor, Staff, Admin
Approve/Disapprove a pending QuestionProtector, Admin
Approve/Disapprove a pending AnswerProtector, Admin
Report a forum messagesilversilverbronzeProtector, Editor, Admin
Approve/Disapprove a pending Forum MessageProtector, Admin
Create a new tagsilversilversilversilverAdmin
Modify a tagsilversilversilversilverAdmin

Actions with a green tick can be performed by this member.


 
GeneralUsing ViewComponents in ASP.NET Core 2.0 Pin
Dominic Burford16-Apr-18 22:49
professionalDominic Burford16-Apr-18 22:49 
GeneralWeb application metrics with Application Insight Part 2 Pin
Dominic Burford10-Apr-18 22:50
professionalDominic Burford10-Apr-18 22:50 
GeneralWriting flexible code in ASP.NET Core 2.0 Razor Pages Pin
Dominic Burford3-Apr-18 5:06
professionalDominic Burford3-Apr-18 5:06 
GeneralPerforming Code Coverage for .NET Core 2.0 applications Pin
Dominic Burford23-Mar-18 4:54
professionalDominic Burford23-Mar-18 4:54 
GeneralRe: Performing Code Coverage for .NET Core 2.0 applications Pin
Slacker00723-Mar-18 5:12
professionalSlacker00723-Mar-18 5:12 
GeneralRe: Performing Code Coverage for .NET Core 2.0 applications Pin
Dominic Burford23-Mar-18 5:15
professionalDominic Burford23-Mar-18 5:15 
GeneralBuilding ASP.NET Core 2.0 web applications Pin
Dominic Burford21-Mar-18 5:39
professionalDominic Burford21-Mar-18 5:39 
GeneralObtaining the authentication token returned from Azure AD B2C in ASP.NET Core 2.0 Pin
Dominic Burford16-Mar-18 2:03
professionalDominic Burford16-Mar-18 2:03 
This is defiitely something that caught me out. We are using Azure Active Directory Business-2-Consumer (AD B2C) in our latest web app for all user identity including signup / signin / password reset. After configuring and setting up the required policies (specifying what information we wanted returned in the token upon success), I then set about trying to retrieve the JWT token that is returned from Azure AD B2C so that I would know the identity of the logged-in user..

Retrieving this token proved a bit more difficult than I originally thought. I checked the response headers and couldn't find the token. I checked through the documentation and couldn't find any examples or explanation of how to retrieve the token.

Using the browser's built-in debugging tools and Telerik Fiddler, I could see that the token was being posted to the /signin-oidc endpoint (which is the default endpoint for OpenId Connect applications).

I did eventually come across this article[^] which seemed a likely candidate. Unfortunately, when attempting to follow the instructions I got an error when running the application. Our configuration didn't seem to work with the example code given in the article.

Eventually, I managed to come across this article[^] The important part of the article is the code snippet below.
@{
    ViewData["Title"] = "Security";
}
<h2>Secure</h2>

<dl>
    @foreach (var claim in User.Claims)
    {
        <dt>@claim.Type</dt>
        <dd>@claim.Value</dd>
    }
</dl>
Basically, the returned claims from Azure AD B2C are contained within the user object Claims property.
User.Claims
By iterating through this object I was able to retrieve all the claims that I had configured in our Azure policies.

I don't know why this critical piece of the jigsaw is so sparsely documented. Without knowing which user has logged into our web app, we are pretty much at a loss as to provide any functionality. Being able to determine the identity of the user is the critical functionality provided by the Identity Provider (any identity provider).

I hope this article helps out at least a few other developers.
"There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult." - C.A.R. Hoare

Home | LinkedIn | Google+ | Twitter

GeneralVersioning a .NET Core 2.0 application Pin
Dominic Burford13-Mar-18 2:34
professionalDominic Burford13-Mar-18 2:34 
GeneralThe next generation technical stack Pin
Dominic Burford12-Mar-18 4:43
professionalDominic Burford12-Mar-18 4:43 
GeneralWriting flexible code Pin
Dominic Burford22-Jan-18 23:58
professionalDominic Burford22-Jan-18 23:58 
GeneralA cautionary tale of over-confidence in your own opinions Pin
Dominic Burford22-Dec-17 1:57
professionalDominic Burford22-Dec-17 1:57 
GeneralWhat lies ahead in 2018 Pin
Dominic Burford21-Dec-17 0:18
professionalDominic Burford21-Dec-17 0:18 
GeneralTemplated HTML emails using RazorEngine Pin
Dominic Burford30-Nov-17 4:49
professionalDominic Burford30-Nov-17 4:49 
GeneralSending emails using Azure Sendgrid service Pin
Dominic Burford29-Nov-17 11:18
professionalDominic Burford29-Nov-17 11:18 
GeneralBuilding native enterprise apps is (probably) the wrong approach Pin
Dominic Burford28-Nov-17 1:05
professionalDominic Burford28-Nov-17 1:05 
GeneralAppropriate vs Consistent Pin
Dominic Burford9-Nov-17 3:24
professionalDominic Burford9-Nov-17 3:24 
GeneralCreating Generic RESTful API Services Pin
Dominic Burford20-Oct-17 5:01
professionalDominic Burford20-Oct-17 5:01 
GeneralIs your software team a democracy or a dictatorship? Pin
Dominic Burford16-Oct-17 21:44
professionalDominic Burford16-Oct-17 21:44 
GeneralSimplifying updating data Pin
Dominic Burford21-Sep-17 22:46
professionalDominic Burford21-Sep-17 22:46 
GeneralWhen 100% code coverage is not always enough Pin
Dominic Burford21-Jul-17 5:11
professionalDominic Burford21-Jul-17 5:11 
GeneralThat's the app in the app stores Pin
Dominic Burford18-Jul-17 5:00
professionalDominic Burford18-Jul-17 5:00 
GeneralDefensive Programming Pin
Dominic Burford28-Jun-17 7:23
professionalDominic Burford28-Jun-17 7:23 
GeneralMy first year - How time flies Pin
Dominic Burford19-Jun-17 1:40
professionalDominic Burford19-Jun-17 1:40 
GeneralShould software architects write code? Pin
Dominic Burford16-Jun-17 4:22
professionalDominic Burford16-Jun-17 4:22 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.


Advertise | Privacy | Cookies | Terms of Service
Web03 | 2.8.190618.1 | Last Updated 19 Jun 2019
Copyright © CodeProject, 1999-2019
All Rights Reserved.
Layout: fixed | fluid