Regex Performance With and Without RegexOptions.C...
We’ve had some internal discussion around the usage of RegexOptions.Compiled in .NET – how it works and when it’s appropriate to use it. ...
.NETWe’ve had some internal discussion around the usage of RegexOptions.Compiled in .NET – how it works and when it’s appropriate to use it. ...
.NETDebugging web applications can be difficult sometimes. When debugging a failed HTTP GET request in Application Insights you have all of t...
.NETSupporting IE comes with challenges if you are using es6, and while babel helps greatly there is a few gotcheas. One of the main one is u...
JavaScript IE 11For a long time, we were dependent on the CSS frameworks of others – and we were quite happy. 😀 As our needs grew, we needed a framework...
Sass Dart SassAutofac is an inversion of control container for .NET. It allows developers to register items and then later use those registrations to i...
.NETWorking with dates can seem a little daunting sometimes. We need specific formatting, and hopefully we don’t have to deal with timezones ...
JavaScript Vue HTMLWe recently started using SendGrid to send emails in production. As part of that, we noticed that emails to outlook.com, hotmail.com, msn...
SendGridHave you found yourself getting lost in large Vue components that have multiple features? The Composition API is a new optional syntax in...
vue3 composition frontend developmentAccording to https://www.chromestatus.com/feature/5088147346030592 at the time of this blog post Chrome 80 is targeted to default cookies...
.NETOur RimDev.FeatureFlags library uses Newtonsoft.Json as part of roundtripping the on/off state in SQL. With that we use TypeNameHandling....
.NETI never thought ordering of relational static fields and properties in C# mattered. And, then, I started getting NREs on a property I kno...
C#.NET’s LINQ library has extension-methods that will return a default-value if not found in a collection. These are a great time-saver if ...
.NET LINQHow are we building our websites? Are they truly for everyone or if we ask ourselves honestly are they just for us? The way we currently ...
care performance UI/UX frontend developmentWorking with NPM packages locally can feel a little bit overwhelming at first. Over the last year, we have transitioned some of our infra...
npm tgzIn order to avoid having large files in our Git history we’ve been using Git Large File Storage (LFS). It commits a marker in the Git rep...
GitHow do you not overwhelm the user with a wall of content? When thinking about user experience, this question often comes to mind as we d...
UI/UX frontend SEOIf your idea of accessibility is making sure your site hits a specific WCAG score, you’re probably leaving out some users. Maybe accessib...
Accessibility UI/UX frontendAbout a year ago, RIMDev started a DevOps transformation. As part of that transformation, we started to use slots in Azure app services, ...
devops rimbot chatopsOver the previous year we’ve been working to improve our overall uptime. While we aren’t prepared to offer 99.999% availability in the wa...
Azure DevOpsAt Ritter Insurance Marketing, we utilize IdentityServer3 for our authentication mechanism. It has been almost a year of hosting in Windows Azure with great success. While it has been a positive experience, but there has been one frustrating issue. Unpredictably, our authentication system would break, leaving our applications inaccessible. We started noticing a specific exception in our error log when these events would occur:
System.IdentityModel.Tokens.SecurityTokenInvalidIssuerException
IDX10205: Issuer validation failed. Issuer: 'https://auth.ritterim.com/identity'. \
Did not match: validationParameters.ValidIssuer: 'null' or validationParameters.ValidIssuers: \
'https://auth.ritterim.com/, https://rim-auth-east.azurewebsites.net/identity'.
We have noticed that the Issuer
url value being provided by an authentication request changes randomly in Windows Azure. The unknown bug causes our applications to break. While the change is random, the expected issuer urls are not. We have narrowed it down to these known variations.
https://{custom domain name}.com
https://{custom domain name}.com/identity
https://{azure app name}.azurewebsites.net
https://{azure app name}.azurewebsites.net/identity
To setup the valid issuers for IdentityServer3, we just use the APIs provided by the library.
app.UseOpenIdConnectAuthentication(new OpenIdConnectAuthenticationOptions
{
// other settings...
TokenValidationParameters = new TokenValidationParameters()
{
AuthenticationType = "Cookies",
// a comma seperated list of urls
ValidIssuers = config.ValidIssuers
}
// other settings...
});
We hope we’ve found all the variations, and for the last several weeks our authentication has become a lot more stable. I hope this helps anyone experiencing issues with IdentityServer3 and Windows Azure.