<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Scott Brady - scottbrady.io</title>
    <link>https://www.scottbrady.io</link>
    <description>Articles on Identity, Authentication, OAuth, and ASP.NET Core.</description>
    <copyright>Scott Brady (c) 2015 - 2026</copyright>
    <category>Software Development</category>
    <language>en-us</language>
    <lastBuildDate>Fri, 13 Mar 2026 00:00:00 GMT</lastBuildDate>
    <docs>https://www.rssboard.org/rss-specification</docs>
    <atom:link href="https://www.scottbrady.io/rss.xml" rel="self" type="application/rss+xml" />
    <image>
      <url>https://www.scottbrady.io/img/logos/scottbrady91.png?v=2</url>
      <title>Scott Brady - scottbrady.io</title>
      <link>https://www.scottbrady.io</link>
    </image>
    <item>
      <guid isPermaLink="true">https://www.scottbrady.io/general/cto-craft-con-london-2026</guid>
      <title>CTO Craft Con London 2026</title>
      <link>https://www.scottbrady.io/general/cto-craft-con-london-2026</link>
      <description>A review of the changes in 2025 and my plans for 2026.</description>
      <category>General</category>
      <pubDate>Fri, 13 Mar 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <guid isPermaLink="true">https://www.scottbrady.io/general/year-in-review-2024</guid>
      <title>Year in review: 2024</title>
      <link>https://www.scottbrady.io/general/year-in-review-2024</link>
      <description>A review of the changes in 2024 and my plans for 2025.</description>
      <category>General</category>
      <pubDate>Tue, 31 Dec 2024 00:00:00 GMT</pubDate>
    </item>
    <item>
      <guid isPermaLink="true">https://www.scottbrady.io/ws-federation/understanding-ws-federation</guid>
      <title>Understanding WS-Federation: A modern primer for an obsolete protocol</title>
      <link>https://www.scottbrady.io/ws-federation/understanding-ws-federation</link>
      <description>A modern overview of the WS-Federation protocol, focussing on the parts of the protocol that are still in use and somewhat useful to know.</description>
      <category>WS-Federation</category>
      <pubDate>Tue, 09 Apr 2024 00:00:00 GMT</pubDate>
    </item>
    <item>
      <guid isPermaLink="true">https://www.scottbrady.io/general/year-in-review-2023</guid>
      <title>Year in review: 2023</title>
      <link>https://www.scottbrady.io/general/year-in-review-2023</link>
      <description>A review of the changes in 2023 and my plans for 2024.</description>
      <category>General</category>
      <pubDate>Sun, 31 Dec 2023 00:00:00 GMT</pubDate>
    </item>
    <item>
      <guid isPermaLink="true">https://www.scottbrady.io/leadership/book-notes-elegant-puzzle</guid>
      <title>Book notes &amp; reflections: An Elegant Puzzle</title>
      <link>https://www.scottbrady.io/leadership/book-notes-elegant-puzzle</link>
      <description>An overview of the book “An Elegant Puzzle: Systems of Engineering Management” by Will Larson, including some of my key takeaways, how they relate to my own experience, and what I am trying to implement as a result.</description>
      <category>Leadership</category>
      <pubDate>Sat, 16 Sep 2023 00:00:00 GMT</pubDate>
    </item>
    <item>
      <guid isPermaLink="true">https://www.scottbrady.io/c-sharp/rsa-key-loading-dotnet</guid>
      <title>Loading RSA Keys in .NET</title>
      <link>https://www.scottbrady.io/c-sharp/rsa-key-loading-dotnet</link>
      <description>How to create your own RSA key in .NET or load one from a JSON Web Key, a PEM file, or an X.509 certificate.</description>
      <category>C#</category>
      <pubDate>Sun, 19 Mar 2023 00:00:00 GMT</pubDate>
    </item>
    <item>
      <guid isPermaLink="true">https://www.scottbrady.io/cryptopals/implementing-and-breaking-aes-ecb</guid>
      <title>Challenges 7-12: Implementing and breaking AES ECB</title>
      <link>https://www.scottbrady.io/cryptopals/implementing-and-breaking-aes-ecb</link>
      <description>Implementing AES with ECB and CBC block cipher modes and brute-force decrypting your first encryption oracle.</description>
      <category>Cryptopals</category>
      <pubDate>Sun, 05 Feb 2023 00:00:00 GMT</pubDate>
    </item>
    <item>
      <guid isPermaLink="true">https://www.scottbrady.io/general/year-in-review-2022</guid>
      <title>Year in review: 2022</title>
      <link>https://www.scottbrady.io/general/year-in-review-2022</link>
      <description>A review of the changes in 2022 and my plans for 2023.</description>
      <category>General</category>
      <pubDate>Sat, 31 Dec 2022 00:00:00 GMT</pubDate>
    </item>
    <item>
      <guid isPermaLink="true">https://www.scottbrady.io/leadership/book-notes-making-of-a-manager</guid>
      <title>Book notes &amp; reflections: The Making of a Manager</title>
      <link>https://www.scottbrady.io/leadership/book-notes-making-of-a-manager</link>
      <description>An overview of the book “The Making of a Manager: What to Do When Everyone Looks to You” by Julie Zhou, including some of my key takeaways, how they relate to my own experience, and what I am trying to implement as a result.</description>
      <category>Leadership</category>
      <pubDate>Thu, 24 Nov 2022 00:00:00 GMT</pubDate>
    </item>
    <item>
      <guid isPermaLink="true">https://www.scottbrady.io/oauth/client-authentication</guid>
      <title>OAuth client authentication - more than just client secrets</title>
      <link>https://www.scottbrady.io/oauth/client-authentication</link>
      <description>Learn the pros and cons of each OAuth client authentication mechanism and take your OAuth security beyond client secrets.</description>
      <category>OAuth</category>
      <pubDate>Mon, 10 Oct 2022 00:00:00 GMT</pubDate>
    </item>
    <item>
      <guid isPermaLink="true">https://www.scottbrady.io/leadership/book-notes-art-of-leadership</guid>
      <title>Book notes &amp; reflections: The Art of Leadership</title>
      <link>https://www.scottbrady.io/leadership/book-notes-art-of-leadership</link>
      <description>An overview of the book 'The Art of Leadership' by Michael Lopp, including some of my key takeaways, how they relate to my own experience, and what I am trying to implement as a result.</description>
      <category>Leadership</category>
      <pubDate>Sun, 02 Oct 2022 00:00:00 GMT</pubDate>
    </item>
    <item>
      <guid isPermaLink="true">https://www.scottbrady.io/python/authlib-python-jwt</guid>
      <title>JWT creation and validation in Python using Authlib</title>
      <link>https://www.scottbrady.io/python/authlib-python-jwt</link>
      <description>Learn how to create and validate JSON Web Tokens (JWTs) in Python using the Authlib library, JWT security best practices, and claims validation.</description>
      <category>Python</category>
      <pubDate>Thu, 25 Aug 2022 00:00:00 GMT</pubDate>
    </item>
    <item>
      <guid isPermaLink="true">https://www.scottbrady.io/jose/json-web-encryption</guid>
      <title>Understanding JSON Web Encryption (JWE)</title>
      <link>https://www.scottbrady.io/jose/json-web-encryption</link>
      <description>Learn how JSON Web Encryption (JWE) works with a walkthrough of the token format, best practices, and the encryption algorithms available to you.</description>
      <category>JOSE</category>
      <pubDate>Wed, 17 Aug 2022 00:00:00 GMT</pubDate>
    </item>
    <item>
      <guid isPermaLink="true">https://www.scottbrady.io/oauth/pluralsight-jwt-fundamentals</guid>
      <title>New Pluralsight Course: JSON Web Token (JWT) Fundamentals</title>
      <link>https://www.scottbrady.io/oauth/pluralsight-jwt-fundamentals</link>
      <description>Learn how to use JWTs securely with my latest course on Pluralsight: JWT Fundamentals.</description>
      <category>OAuth</category>
      <pubDate>Wed, 10 Aug 2022 00:00:00 GMT</pubDate>
    </item>
    <item>
      <guid isPermaLink="true">https://www.scottbrady.io/oauth/open-banking-uk</guid>
      <title>Open Banking for OAuth Developers</title>
      <link>https://www.scottbrady.io/oauth/open-banking-uk</link>
      <description>Learn how the UK's Open Banking makes use of OAuth and OpenID Connect.</description>
      <category>OAuth</category>
      <pubDate>Tue, 08 Mar 2022 00:00:00 GMT</pubDate>
    </item>
    <item>
      <guid isPermaLink="true">https://www.scottbrady.io/oauth/step-up-authentication</guid>
      <title>Step-up authentication with OAuth and OpenID Connect</title>
      <link>https://www.scottbrady.io/oauth/step-up-authentication</link>
      <description>Learn how to implement and trigger standards-based step-up authentication using OAuth, OpenID Connect, and SAML.</description>
      <category>OAuth</category>
      <pubDate>Mon, 28 Feb 2022 00:00:00 GMT</pubDate>
    </item>
    <item>
      <guid isPermaLink="true">https://www.scottbrady.io/general/year-in-review-2021</guid>
      <title>Year in Review: 2021</title>
      <link>https://www.scottbrady.io/general/year-in-review-2021</link>
      <description>A review of the changes in 2021 and my plans for 2022.</description>
      <category>General</category>
      <pubDate>Fri, 31 Dec 2021 00:00:00 GMT</pubDate>
    </item>
    <item>
      <guid isPermaLink="true">https://www.scottbrady.io/umbraco/frontend-members-sso-openid-connect</guid>
      <title>Umbraco frontend membership SSO using OpenID Connect</title>
      <link>https://www.scottbrady.io/umbraco/frontend-members-sso-openid-connect</link>
      <description>How to log into an Umbraco website as an end-user via an external SSO solution such as IdentityServer, Google, or Auth0.</description>
      <category>Umbraco</category>
      <pubDate>Tue, 30 Nov 2021 00:00:00 GMT</pubDate>
    </item>
    <item>
      <guid isPermaLink="true">https://www.scottbrady.io/general/rock-solid-knowledge-to-10x-banking</guid>
      <title>Goodbye, Rock Solid Knowledge; Hello, 10x Banking</title>
      <link>https://www.scottbrady.io/general/rock-solid-knowledge-to-10x-banking</link>
      <description>Why I have left Rock Solid Knowledge, what I’m doing in my new job at 10x Banking, and what, if anything, will change on this website.</description>
      <category>General</category>
      <pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate>
    </item>
    <item>
      <guid isPermaLink="true">https://www.scottbrady.io/openid-connect/identity-tokens</guid>
      <title>Understanding identity tokens</title>
      <link>https://www.scottbrady.io/openid-connect/identity-tokens</link>
      <description>A deep dive into OpenID Connect’s ID token, looking at what identity tokens are, what they are not, where to use them, and how to validate them.</description>
      <category>OpenID Connect</category>
      <pubDate>Thu, 25 Nov 2021 00:00:00 GMT</pubDate>
    </item>
    <item>
      <guid isPermaLink="true">https://www.scottbrady.io/umbraco/backoffice-sso-openid-connect</guid>
      <title>Umbraco backoffice SSO with OpenID Connect</title>
      <link>https://www.scottbrady.io/umbraco/backoffice-sso-openid-connect</link>
      <description>How to log into the Umbraco backoffice using an external identity provider such as IdentityServer, Azure AD, or Auth0.</description>
      <category>Umbraco</category>
      <pubDate>Thu, 11 Nov 2021 00:00:00 GMT</pubDate>
    </item>
    <item>
      <guid isPermaLink="true">https://www.scottbrady.io/soft-skills/polywork-vs-impostor-syndrome</guid>
      <title>How I use Polywork to overcome impostor syndrome</title>
      <link>https://www.scottbrady.io/soft-skills/polywork-vs-impostor-syndrome</link>
      <description>Polywork is a new social media platform that I’ve been using to track my recent achievements, both big and small, and to tackle my ongoing impostor syndrome.</description>
      <category>Soft Skills</category>
      <pubDate>Tue, 12 Oct 2021 00:00:00 GMT</pubDate>
    </item>
    <item>
      <guid isPermaLink="true">https://www.scottbrady.io/c-sharp/xml-signing-dotnet</guid>
      <title>How to sign XML using RSA in .NET</title>
      <link>https://www.scottbrady.io/c-sharp/xml-signing-dotnet</link>
      <description>How to sign XML in .NET and .NET Core using an RSA key while avoiding common XML security pitfalls.</description>
      <category>C#</category>
      <pubDate>Tue, 21 Sep 2021 00:00:00 GMT</pubDate>
    </item>
    <item>
      <guid isPermaLink="true">https://www.scottbrady.io/c-sharp/ecdsa-xml-dotnet</guid>
      <title>ECDSA and Custom XML Signatures in .NET</title>
      <link>https://www.scottbrady.io/c-sharp/ecdsa-xml-dotnet</link>
      <description>Drag your XML signing into the 2020's with modern cryptography by signing XML with ECDSA.</description>
      <category>C#</category>
      <pubDate>Tue, 21 Sep 2021 00:00:00 GMT</pubDate>
    </item>
    <item>
      <guid isPermaLink="true">https://www.scottbrady.io/c-sharp/ecdsa-key-loading</guid>
      <title>Loading Elliptic Curve (EC) Keys in .NET</title>
      <link>https://www.scottbrady.io/c-sharp/ecdsa-key-loading</link>
      <description>Four different ways of loading Elliptic Curve (EC) keys in .NET for use with Elliptic Curve Digital Signature Algorithms (ECDSA).</description>
      <category>C#</category>
      <pubDate>Mon, 23 Aug 2021 00:00:00 GMT</pubDate>
    </item>
    <item>
      <guid isPermaLink="true">https://www.scottbrady.io/umbraco/mvp-2021</guid>
      <title>Umbraco MVP 2021</title>
      <link>https://www.scottbrady.io/umbraco/mvp-2021</link>
      <description>I’m an Umbraco MVP for 2021! This was awarded in recognition of my contributions to the Unicore project, where Rock Solid Knowledge helped Umbraco migrate their user store to ASP.NET Core Identity.</description>
      <category>Umbraco</category>
      <pubDate>Thu, 10 Jun 2021 00:00:00 GMT</pubDate>
    </item>
    <item>
      <guid isPermaLink="true">https://www.scottbrady.io/oauth/client-authentication-vs-pkce</guid>
      <title>Client Authentication vs. PKCE: Do you need both?</title>
      <link>https://www.scottbrady.io/oauth/client-authentication-vs-pkce</link>
      <description>Learn how OAuth Proof-Key for Code Exchange (PKCE) does not replace client authentication (e.g. secrets) and why you should use both where possible.</description>
      <category>OAuth</category>
      <pubDate>Tue, 01 Jun 2021 00:00:00 GMT</pubDate>
    </item>
    <item>
      <guid isPermaLink="true">https://www.scottbrady.io/c-sharp/aes-gcm-dotnet</guid>
      <title>Authenticated Encryption in .NET with AES-GCM</title>
      <link>https://www.scottbrady.io/c-sharp/aes-gcm-dotnet</link>
      <description>Learn how to use AES-GCM encryption in .NET for authenticated encryption, giving you the usual confidentiality and an additional integrity check.</description>
      <category>C#</category>
      <pubDate>Thu, 20 May 2021 00:00:00 GMT</pubDate>
    </item>
    <item>
      <guid isPermaLink="true">https://www.scottbrady.io/authentication/beware-of-password-shucking</guid>
      <title>Beware of Password Shucking</title>
      <link>https://www.scottbrady.io/authentication/beware-of-password-shucking</link>
      <description>Learn how password shucking attacks rehashed or pre-hashed passwords by stripping your password hashes of their strong outer password hashing algorithm.</description>
      <category>Authentication</category>
      <pubDate>Tue, 13 Apr 2021 00:00:00 GMT</pubDate>
    </item>
    <item>
      <guid isPermaLink="true">https://www.scottbrady.io/aspnet-identity/aspnet-identity-password-policies-with-password-managers</guid>
      <title>Integrating ASP.NET Identity Password Policies with Password Managers</title>
      <link>https://www.scottbrady.io/aspnet-identity/aspnet-identity-password-policies-with-password-managers</link>
      <description>Learn how to automatically set HTML passwordrules based on your ASP.NET Identity password options, using the newpassword tag helper from ScottBrady.IdentityModel.</description>
      <category>ASP.NET Identity</category>
      <pubDate>Mon, 15 Mar 2021 00:00:00 GMT</pubDate>
    </item>
    <item>
      <guid isPermaLink="true">https://www.scottbrady.io/authentication/perfecting-the-password-field-with-the-html-passwordrules-attribute</guid>
      <title>Perfecting the password field with the HTML passwordrules attribute</title>
      <link>https://www.scottbrady.io/authentication/perfecting-the-password-field-with-the-html-passwordrules-attribute</link>
      <description>Learn how to integrate sign up forms with password generators by using the autocomplete and passwordrules HTML attributes.</description>
      <category>Authentication</category>
      <pubDate>Wed, 27 Jan 2021 00:00:00 GMT</pubDate>
    </item>
    <item>
      <guid isPermaLink="true">https://www.scottbrady.io/saml/new-pluralsight-course-getting-started-with-saml-20</guid>
      <title>New Pluralsight Course: Getting Started with SAML 2.0</title>
      <link>https://www.scottbrady.io/saml/new-pluralsight-course-getting-started-with-saml-20</link>
      <description>SAML is the protocol that no one wants to use. But if you must use it, at least you now have a modern, detailed introduction to SAML thanks to my new Pluralsight course.</description>
      <category>SAML</category>
      <pubDate>Thu, 21 Jan 2021 00:00:00 GMT</pubDate>
    </item>
    <item>
      <guid isPermaLink="true">https://www.scottbrady.io/general/year-in-review-2020</guid>
      <title>Year in Review: 2020</title>
      <link>https://www.scottbrady.io/general/year-in-review-2020</link>
      <description>A review of what little I got up to in 2020 and my plans for 2021.</description>
      <category>General</category>
      <pubDate>Tue, 29 Dec 2020 00:00:00 GMT</pubDate>
    </item>
    <item>
      <guid isPermaLink="true">https://www.scottbrady.io/oauth/oauth-is-not-user-authorization</guid>
      <title>OAuth is Not User Authorization</title>
      <link>https://www.scottbrady.io/oauth/oauth-is-not-user-authorization</link>
      <description>Avoid a common OAuth pitfall by learning how OAuth consent and access tokens differ from user-level authorization policies.</description>
      <category>OAuth</category>
      <pubDate>Mon, 30 Nov 2020 00:00:00 GMT</pubDate>
    </item>
    <item>
      <guid isPermaLink="true">https://www.scottbrady.io/c-sharp/xchacha20-poly1305-dotnet</guid>
      <title>XChaCha20-Poly1305: A Primer with Examples in .NET</title>
      <link>https://www.scottbrady.io/c-sharp/xchacha20-poly1305-dotnet</link>
      <description>Learn the introductory theory behind XChaCha20-Poly1305, a standby cipher for symmetric encryption, and how to use it in .NET with libsodium or implement it yourself by 'rolling your own crypto' on top of Bouncy Castle.</description>
      <category>C#</category>
      <pubDate>Sun, 11 Oct 2020 00:00:00 GMT</pubDate>
    </item>
    <item>
      <guid isPermaLink="true">https://www.scottbrady.io/c-sharp/pem-loading-in-dotnet-core-and-dotnet</guid>
      <title>PEM Loading in .NET Core and .NET 5</title>
      <link>https://www.scottbrady.io/c-sharp/pem-loading-in-dotnet-core-and-dotnet</link>
      <description>Learn how to load keys and certificates from PEM files in .NET. With code samples showing the new APIs added in .NET 5 and how to use PEM certificates with Kestrel.</description>
      <category>C#</category>
      <pubDate>Mon, 21 Sep 2020 00:00:00 GMT</pubDate>
    </item>
    <item>
      <guid isPermaLink="true">https://www.scottbrady.io/fido/recording-lets-stop-blaming-our-users-for-getting-hacked-when-it-is-our-problem-to-solve</guid>
      <title>Recording: Let's stop blaming our users for getting hacked when it is our problem to solve</title>
      <link>https://www.scottbrady.io/fido/recording-lets-stop-blaming-our-users-for-getting-hacked-when-it-is-our-problem-to-solve</link>
      <description>My talk from NDC Oslo 2020. Learn how current user authentication isn't good enough and how you can solve the password problem with FIDO2 and WebAuthn.</description>
      <category>FIDO</category>
      <pubDate>Thu, 20 Aug 2020 00:00:00 GMT</pubDate>
    </item>
    <item>
      <guid isPermaLink="true">https://www.scottbrady.io/jose/jwts-which-signing-algorithm-should-i-use</guid>
      <title>JWTs: Which Signing Algorithm Should I Use?</title>
      <link>https://www.scottbrady.io/jose/jwts-which-signing-algorithm-should-i-use</link>
      <description>Learn the difference between each JOSE algorithm (e.g. RS256, ES256, EdDSA) and how to choose the best one available to you.</description>
      <category>JOSE</category>
      <pubDate>Tue, 18 Aug 2020 00:00:00 GMT</pubDate>
    </item>
    <item>
      <guid isPermaLink="true">https://www.scottbrady.io/openssl/creating-rsa-keys-using-openssl</guid>
      <title>Creating RSA Keys using OpenSSL</title>
      <link>https://www.scottbrady.io/openssl/creating-rsa-keys-using-openssl</link>
      <description>An OpenSSL cheat sheet for creating RSA private keys, public keys, and certificates for use with RSASSA-PKCS1-v1_5 and RSASSA-PSS.</description>
      <category>OpenSSL</category>
      <pubDate>Wed, 05 Aug 2020 00:00:00 GMT</pubDate>
    </item>
    <item>
      <guid isPermaLink="true">https://www.scottbrady.io/oauth/oauth-security-workshop-2020</guid>
      <title>OAuth Security Workshop 2020</title>
      <link>https://www.scottbrady.io/oauth/oauth-security-workshop-2020</link>
      <description>My experience and highlights from the OAuth Security Workshop 2020. Including new OAuth topics such as online_access, app2app, FAPI, OAuch, and Web ID.</description>
      <category>OAuth</category>
      <pubDate>Thu, 30 Jul 2020 00:00:00 GMT</pubDate>
    </item>
    <item>
      <guid isPermaLink="true">https://www.scottbrady.io/identity-server/using-ecdsa-in-identityserver4</guid>
      <title>Using ECDSA in IdentityServer4</title>
      <link>https://www.scottbrady.io/identity-server/using-ecdsa-in-identityserver4</link>
      <description>How to use ES256 to sign JWTs in IdentityServer4 while still supporting RS256 for backward compatibility.</description>
      <category>Identity Server</category>
      <pubDate>Wed, 22 Jul 2020 00:00:00 GMT</pubDate>
    </item>
    <item>
      <guid isPermaLink="true">https://www.scottbrady.io/openssl/creating-elliptical-curve-keys-using-openssl</guid>
      <title>Creating Elliptic Curve Keys using OpenSSL</title>
      <link>https://www.scottbrady.io/openssl/creating-elliptical-curve-keys-using-openssl</link>
      <description>An OpenSSL cheat sheet for creating EC private keys, public keys, and certificates for use with ECDSA.</description>
      <category>OpenSSL</category>
      <pubDate>Mon, 20 Jul 2020 00:00:00 GMT</pubDate>
    </item>
    <item>
      <guid isPermaLink="true">https://www.scottbrady.io/general/adding-tailwind-utility-classes-to-your-bootstrap-website</guid>
      <title>Adding Tailwind Utility Classes to your Bootstrap Website</title>
      <link>https://www.scottbrady.io/general/adding-tailwind-utility-classes-to-your-bootstrap-website</link>
      <description>How to use Tailwind CSS and Bootstrap 4 side-by-side.</description>
      <category>General</category>
      <pubDate>Fri, 10 Jul 2020 00:00:00 GMT</pubDate>
    </item>
    <item>
      <guid isPermaLink="true">https://www.scottbrady.io/fido/using-biometrics-in-aspnet-core</guid>
      <title>Using Biometrics in ASP.NET Core</title>
      <link>https://www.scottbrady.io/fido/using-biometrics-in-aspnet-core</link>
      <description>Physical biometrics, such as fingerprint or facial recognition, are super useful when logging into mobile apps. So why can't you use biometrics in the browser?</description>
      <category>FIDO</category>
      <pubDate>Mon, 06 Jul 2020 00:00:00 GMT</pubDate>
    </item>
    <item>
      <guid isPermaLink="true">https://www.scottbrady.io/c-sharp/eddsa-for-jwt-signing-in-dotnet-core</guid>
      <title>EdDSA for JWT Signing in .NET Core</title>
      <link>https://www.scottbrady.io/c-sharp/eddsa-for-jwt-signing-in-dotnet-core</link>
      <description>A primer on EdDSA and how to use it for JWT signing in .NET Core using Bouncy Castle and ScottBrady.IdentityModel.</description>
      <category>C#</category>
      <pubDate>Mon, 01 Jun 2020 00:00:00 GMT</pubDate>
    </item>
    <item>
      <guid isPermaLink="true">https://www.scottbrady.io/c-sharp/replacing-jwts-with-branca-and-paseto-in-dotnet-core</guid>
      <title>Replacing JWTs with Branca and PASETO in .NET Core</title>
      <link>https://www.scottbrady.io/c-sharp/replacing-jwts-with-branca-and-paseto-in-dotnet-core</link>
      <description>Branca, PASETO, XChaCha20-Poly1305, and Base62 support in .NET Core using ScottBrady.IdentityModel.</description>
      <category>C#</category>
      <pubDate>Tue, 12 May 2020 00:00:00 GMT</pubDate>
    </item>
    <item>
      <guid isPermaLink="true">https://www.scottbrady.io/jose/alternatives-to-jwts</guid>
      <title>Alternatives to JSON Web Tokens (JWTs)</title>
      <link>https://www.scottbrady.io/jose/alternatives-to-jwts</link>
      <description>JWTs get a lot of hate from the crypto community, but what are the alternatives? In this article, I look at implementations such as Branca and PASETO to see how they compare to JWTs.</description>
      <category>JOSE</category>
      <pubDate>Tue, 28 Apr 2020 00:00:00 GMT</pubDate>
    </item>
    <item>
      <guid isPermaLink="true">https://www.scottbrady.io/identity-server/outsourcing-identityserver4-token-signing-to-azure-key-vault</guid>
      <title>Outsourcing IdentityServer4 Token Signing to Azure Key Vault</title>
      <link>https://www.scottbrady.io/identity-server/outsourcing-identityserver4-token-signing-to-azure-key-vault</link>
      <description>How to outsource IdentityServer4 JWT signing to Azure Key Vault. No private keys were downloaded in the making of this article.</description>
      <category>Identity Server</category>
      <pubDate>Mon, 30 Mar 2020 00:00:00 GMT</pubDate>
    </item>
    <item>
      <guid isPermaLink="true">https://www.scottbrady.io/fido/building-a-fido-authenticator-with-opensk</guid>
      <title>Building a FIDO Authenticator with OpenSK</title>
      <link>https://www.scottbrady.io/fido/building-a-fido-authenticator-with-opensk</link>
      <description>My experience with OpenSK, an open-source FIDO2 authenticator implementation, using a VirtualBox VM and FIDO2 for ASP.NET.</description>
      <category>FIDO</category>
      <pubDate>Mon, 10 Feb 2020 00:00:00 GMT</pubDate>
    </item>
    <item>
      <guid isPermaLink="true">https://www.scottbrady.io/aspnet-identity/identitymanager2-2020-update</guid>
      <title>IdentityManager2 2020 Update</title>
      <link>https://www.scottbrady.io/aspnet-identity/identitymanager2-2020-update</link>
      <description>New features in IdentityManager2 with ASP.NET Core 3.1 and SameSite cookie support.</description>
      <category>ASP.NET Identity</category>
      <pubDate>Mon, 27 Jan 2020 00:00:00 GMT</pubDate>
    </item>
    <item>
      <guid isPermaLink="true">https://www.scottbrady.io/fido/defeating-phishing-with-fido2-for-aspnet-core</guid>
      <title>Defeating Phishing with FIDO2 for ASP.NET</title>
      <link>https://www.scottbrady.io/fido/defeating-phishing-with-fido2-for-aspnet-core</link>
      <description>Learn how Evilginx can phish common multi-factor authentication implementations, and how you can defeat it using FIDO2.</description>
      <category>FIDO</category>
      <pubDate>Thu, 23 Jan 2020 00:00:00 GMT</pubDate>
    </item>
    <item>
      <guid isPermaLink="true">https://www.scottbrady.io/aspnet/refreshing-your-legacy-aspnet-identityserver-client-applications</guid>
      <title>Refreshing your Legacy ASP.NET IdentityServer Client Applications (with PKCE)</title>
      <link>https://www.scottbrady.io/aspnet/refreshing-your-legacy-aspnet-identityserver-client-applications</link>
      <description>Give your ASP.NET 4.x apps a refresh with the latest OWIN updates and Proof Key for Code Exchange</description>
      <category>ASP.NET</category>
      <pubDate>Thu, 16 Jan 2020 00:00:00 GMT</pubDate>
    </item>
    <item>
      <guid isPermaLink="true">https://www.scottbrady.io/general/year-in-review-2019</guid>
      <title>Year in Review: 2019</title>
      <link>https://www.scottbrady.io/general/year-in-review-2019</link>
      <description>A nostalgic review of what I got up to in 2019 and plans for 2020.</description>
      <category>General</category>
      <pubDate>Sat, 28 Dec 2019 00:00:00 GMT</pubDate>
    </item>
    <item>
      <guid isPermaLink="true">https://www.scottbrady.io/c-sharp/supporting-custom-jwt-signing-algorithms-in-dotnet-core</guid>
      <title>Supporting Custom JWT Signing Algorithms (ES256K) in .NET Core</title>
      <link>https://www.scottbrady.io/c-sharp/supporting-custom-jwt-signing-algorithms-in-dotnet-core</link>
      <description>How to implement custom signing algorithms for JWT validation in .NET Core, with examples using ES256K and Bouncy Castle.</description>
      <category>C#</category>
      <pubDate>Mon, 16 Dec 2019 00:00:00 GMT</pubDate>
    </item>
    <item>
      <guid isPermaLink="true">https://www.scottbrady.io/kotlin/creating-signed-jwts-using-nimbus-jose-jwt</guid>
      <title>Creating Signed JWTs using Nimbus JOSE + JWT</title>
      <link>https://www.scottbrady.io/kotlin/creating-signed-jwts-using-nimbus-jose-jwt</link>
      <description>Cheat sheet for using Nimbus JOSE + JWT to create signing keys, generate signed JWTs, and verify JWT signatures. Examples use ES256K and EdDSA (Ed25519)</description>
      <category>Kotlin</category>
      <pubDate>Sat, 30 Nov 2019 00:00:00 GMT</pubDate>
    </item>
    <item>
      <guid isPermaLink="true">https://www.scottbrady.io/aspnet/using-mkcert-for-aspnet-core-development</guid>
      <title>Using mkcert for ASP.NET Core Development</title>
      <link>https://www.scottbrady.io/aspnet/using-mkcert-for-aspnet-core-development</link>
      <description>Getting started with mkcert for IIS TLS certificates and ASP.NET Core client certificate authentication</description>
      <category>ASP.NET</category>
      <pubDate>Mon, 21 Oct 2019 00:00:00 GMT</pubDate>
    </item>
    <item>
      <guid isPermaLink="true">https://www.scottbrady.io/authentication/new-pluralsight-course-aspnet-authentication-the-big-picture</guid>
      <title>New Pluralsight Course: ASP.NET Authentication - The Big Picture</title>
      <link>https://www.scottbrady.io/authentication/new-pluralsight-course-aspnet-authentication-the-big-picture</link>
      <description>New Pluralsight course on all things user authentication and how to implement them in ASP.NET Core</description>
      <category>Authentication</category>
      <pubDate>Mon, 09 Sep 2019 00:00:00 GMT</pubDate>
    </item>
    <item>
      <guid isPermaLink="true">https://www.scottbrady.io/c-sharp/jwt-signing-using-rsassa-pss-in-dotnet-core</guid>
      <title>JWT Signing using RSASSA-PSS in .NET Core</title>
      <link>https://www.scottbrady.io/c-sharp/jwt-signing-using-rsassa-pss-in-dotnet-core</link>
      <description>A look at the new RSASSA-PSS support in .NET Core and what benefits it has over RSASSA-PKCS1-v1_5</description>
      <category>C#</category>
      <pubDate>Mon, 29 Jul 2019 00:00:00 GMT</pubDate>
    </item>
    <item>
      <guid isPermaLink="true">https://www.scottbrady.io/openid-connect/implementing-sign-in-with-apple-in-aspnet-core</guid>
      <title>Implementing Sign in with Apple in ASP.NET Core</title>
      <link>https://www.scottbrady.io/openid-connect/implementing-sign-in-with-apple-in-aspnet-core</link>
      <description>A primer on Sign in with Apple, including an example integration in ASP.NET Core.</description>
      <category>OpenID Connect</category>
      <pubDate>Sat, 08 Jun 2019 00:00:00 GMT</pubDate>
    </item>
    <item>
      <guid isPermaLink="true">https://www.scottbrady.io/saml/dangers-of-idp-initiated-sso</guid>
      <title>The Dangers of SAML IdP-Initiated SSO</title>
      <link>https://www.scottbrady.io/saml/dangers-of-idp-initiated-sso</link>
      <description>Why you should use SAML's SP-initiated SSO rather than Idp-initiated SSO and unsolicited SAML responses.</description>
      <category>SAML</category>
      <pubDate>Thu, 06 Jun 2019 00:00:00 GMT</pubDate>
    </item>
    <item>
      <guid isPermaLink="true">https://www.scottbrady.io/pake/srp-in-csharp-and-dotnet-core</guid>
      <title>Secure Remote Password (SRP) in C# and .NET Core</title>
      <link>https://www.scottbrady.io/pake/srp-in-csharp-and-dotnet-core</link>
      <description>How to roll your own SRP client and server using C# and .NET Core</description>
      <category>PAKE</category>
      <pubDate>Fri, 31 May 2019 00:00:00 GMT</pubDate>
    </item>
    <item>
      <guid isPermaLink="true">https://www.scottbrady.io/identity-server/encrypting-identity-tokens-in-identityserver4</guid>
      <title>Encrypting Identity Tokens in IdentityServer4</title>
      <link>https://www.scottbrady.io/identity-server/encrypting-identity-tokens-in-identityserver4</link>
      <description>How to encrypt identity tokens in IdentityServer4 and decrypt them in ASP.NET Core.</description>
      <category>Identity Server</category>
      <pubDate>Wed, 10 Apr 2019 00:00:00 GMT</pubDate>
    </item>
    <item>
      <guid isPermaLink="true">https://www.scottbrady.io/dart/generating-a-crypto-random-string-in-dart</guid>
      <title>Generating a Crypto Random String in Dart</title>
      <link>https://www.scottbrady.io/dart/generating-a-crypto-random-string-in-dart</link>
      <description>How to generate a cryptographically random string in Dart, suitable for OAuth and OpenID Connect usage</description>
      <category>Dart</category>
      <pubDate>Sun, 31 Mar 2019 00:00:00 GMT</pubDate>
    </item>
    <item>
      <guid isPermaLink="true">https://www.scottbrady.io/cryptopals/solving-the-cryptopals-crypto-challenges-in-c-sharp</guid>
      <title>Solving the Cryptopals Crypto Challenges in C#</title>
      <link>https://www.scottbrady.io/cryptopals/solving-the-cryptopals-crypto-challenges-in-c-sharp</link>
      <description>My solutions to the Cryptopals Crypto (Cryptography) Challenges using C# and .NET.</description>
      <category>Cryptopals</category>
      <pubDate>Mon, 11 Feb 2019 00:00:00 GMT</pubDate>
    </item>
    <item>
      <guid isPermaLink="true">https://www.scottbrady.io/cryptopals/base64-encoding</guid>
      <title>Challenge 1: Base64 Encoding</title>
      <link>https://www.scottbrady.io/cryptopals/base64-encoding</link>
      <description>Implementing your own Base64 encoder, dealing with hex strings, bit handling, and sextets.</description>
      <category>Cryptopals</category>
      <pubDate>Mon, 11 Feb 2019 00:00:00 GMT</pubDate>
    </item>
    <item>
      <guid isPermaLink="true">https://www.scottbrady.io/cryptopals/caesar-and-vigenere-ciphers</guid>
      <title>Challenges 2-6: Caesar and Vigenère Ciphers</title>
      <link>https://www.scottbrady.io/cryptopals/caesar-and-vigenere-ciphers</link>
      <description>Implementing and breaking XOR-based versions of the Caesar and Vigenère Ciphers in C# and .NET.</description>
      <category>Cryptopals</category>
      <pubDate>Mon, 11 Feb 2019 00:00:00 GMT</pubDate>
    </item>
    <item>
      <guid isPermaLink="true">https://www.scottbrady.io/kotlin/ktor-using-oauth-2-and-identityserver4</guid>
      <title>Ktor using OAuth 2.0 and IdentityServer4</title>
      <link>https://www.scottbrady.io/kotlin/ktor-using-oauth-2-and-identityserver4</link>
      <description>Implementing OAuth support in Ktor &amp; Kotlin to get access tokens from IdentityServer4</description>
      <category>Kotlin</category>
      <pubDate>Fri, 01 Feb 2019 00:00:00 GMT</pubDate>
    </item>
    <item>
      <guid isPermaLink="true">https://www.scottbrady.io/oauth/why-developers-do-care-about-oauth-and-openid-connect</guid>
      <title>Why Developers Do Care About OAuth and OpenID Connect</title>
      <link>https://www.scottbrady.io/oauth/why-developers-do-care-about-oauth-and-openid-connect</link>
      <description>A rebuttal to Okta's 'Nobody Cares About OAuth or OpenID Connect', advocating the education and involvement of developers with OAuth and OpenID Connect.</description>
      <category>OAuth</category>
      <pubDate>Sun, 27 Jan 2019 00:00:00 GMT</pubDate>
    </item>
    <item>
      <guid isPermaLink="true">https://www.scottbrady.io/openid-connect/aspnet-core-using-proof-key-for-code-exchange-pkce</guid>
      <title>ASP.NET Core using Proof Key for Code Exchange (PKCE)</title>
      <link>https://www.scottbrady.io/openid-connect/aspnet-core-using-proof-key-for-code-exchange-pkce</link>
      <description>How to add support for PKCE to your ASP.NET Core OpenID Connect client application.</description>
      <category>OpenID Connect</category>
      <pubDate>Tue, 22 Jan 2019 00:00:00 GMT</pubDate>
    </item>
    <item>
      <guid isPermaLink="true">https://www.scottbrady.io/oauth/cheat-sheet-oauth-for-browser-based-applications</guid>
      <title>Cheat Sheet: OAuth for Browser-Based Applications (e.g. a JavaScript SPA)</title>
      <link>https://www.scottbrady.io/oauth/cheat-sheet-oauth-for-browser-based-applications</link>
      <description>A cheat sheet for choosing the right way to securely access an API when using a browser-based application such as a JavaScript SPA.</description>
      <category>OAuth</category>
      <pubDate>Tue, 22 Jan 2019 00:00:00 GMT</pubDate>
    </item>
    <item>
      <guid isPermaLink="true">https://www.scottbrady.io/c-sharp/json-web-encryption-jwe-in-dotnet-core</guid>
      <title>JSON Web Encryption (JWE) in .NET</title>
      <link>https://www.scottbrady.io/c-sharp/json-web-encryption-jwe-in-dotnet-core</link>
      <description>Learn how to encrypt JSON Web Tokens with JSON Web Encryption in C#, .NET, and ASP.NET Core.</description>
      <category>C#</category>
      <pubDate>Mon, 14 Jan 2019 00:00:00 GMT</pubDate>
    </item>
    <item>
      <guid isPermaLink="true">https://www.scottbrady.io/angular/migrating-oidc-client-js-to-use-the-openid-connect-authorization-code-flow-and-pkce</guid>
      <title>Migrating oidc-client-js to use the OpenID Connect Authorization Code Flow and PKCE</title>
      <link>https://www.scottbrady.io/angular/migrating-oidc-client-js-to-use-the-openid-connect-authorization-code-flow-and-pkce</link>
      <description>Migrating your oidc-client-js SPA from the OpenID Connect implicit flow to authorization code flow with PKCE.</description>
      <category>Angular</category>
      <pubDate>Fri, 11 Jan 2019 00:00:00 GMT</pubDate>
    </item>
    <item>
      <guid isPermaLink="true">https://www.scottbrady.io/authentication/software-tokens-wont-save-you</guid>
      <title>Software Tokens Won't Save You</title>
      <link>https://www.scottbrady.io/authentication/software-tokens-wont-save-you</link>
      <description>A look at the advantages and disadvantages of using software tokens as an authentication factor, focussing on TOTP.</description>
      <category>Authentication</category>
      <pubDate>Wed, 09 Jan 2019 00:00:00 GMT</pubDate>
    </item>
    <item>
      <guid isPermaLink="true">https://www.scottbrady.io/general/year-in-review-2018-catch-up</guid>
      <title>Year in Review: 2018 Catch Up</title>
      <link>https://www.scottbrady.io/general/year-in-review-2018-catch-up</link>
      <description>A brief review of what I've been up to since 2016, including plans for 2019.</description>
      <category>General</category>
      <pubDate>Tue, 01 Jan 2019 00:00:00 GMT</pubDate>
    </item>
    <item>
      <guid isPermaLink="true">https://www.scottbrady.io/identity-server/creating-your-own-identityserver4-storage-library</guid>
      <title>Creating Your Own IdentityServer4 Storage Library</title>
      <link>https://www.scottbrady.io/identity-server/creating-your-own-identityserver4-storage-library</link>
      <description>How to keep your DBA happy by implementing your own IdentityServer4 data store.</description>
      <category>Identity Server</category>
      <pubDate>Tue, 11 Dec 2018 00:00:00 GMT</pubDate>
    </item>
    <item>
      <guid isPermaLink="true">https://www.scottbrady.io/oauth/removing-shared-secrets-for-oauth-client-authentication</guid>
      <title>Removing Shared Secrets for OAuth Client Authentication</title>
      <link>https://www.scottbrady.io/oauth/removing-shared-secrets-for-oauth-client-authentication</link>
      <description>Removing application passwords from OAuth by using JWT Bearer Tokens, including ASP.NET Core and IdentityServer4 usage.</description>
      <category>OAuth</category>
      <pubDate>Tue, 02 Oct 2018 00:00:00 GMT</pubDate>
    </item>
    <item>
      <guid isPermaLink="true">https://www.scottbrady.io/oauth/delegation-patterns-for-oauth-20</guid>
      <title>Delegation Patterns for OAuth 2.0 using Token Exchange</title>
      <link>https://www.scottbrady.io/oauth/delegation-patterns-for-oauth-20</link>
      <description>How to handle delegation scenarios using OAuth Token Exchange, for use with microservices and API gateways.</description>
      <category>OAuth</category>
      <pubDate>Thu, 27 Sep 2018 00:00:00 GMT</pubDate>
    </item>
    <item>
      <guid isPermaLink="true">https://www.scottbrady.io/openid-connect/help-im-stuck-in-a-redirect-loop</guid>
      <title>Help! I’m Stuck in a Redirect Loop!</title>
      <link>https://www.scottbrady.io/openid-connect/help-im-stuck-in-a-redirect-loop</link>
      <description>It's not the identity provider, it's you. Methods for debugging redirect loops when using OpenID Providers such as IdentityServer4.</description>
      <category>OpenID Connect</category>
      <pubDate>Wed, 26 Sep 2018 00:00:00 GMT</pubDate>
    </item>
    <item>
      <guid isPermaLink="true">https://www.scottbrady.io/oauth/new-pluralsight-course-getting-started-with-oauth-20</guid>
      <title>New Pluralsight Course: Getting Started with OAuth 2.0</title>
      <link>https://www.scottbrady.io/oauth/new-pluralsight-course-getting-started-with-oauth-20</link>
      <description>Announcing my new Pluralsight course, in which we take a look at OAuth 2.0, the gold standard for API authorization.</description>
      <category>OAuth</category>
      <pubDate>Sun, 16 Sep 2018 00:00:00 GMT</pubDate>
    </item>
    <item>
      <guid isPermaLink="true">https://www.scottbrady.io/angular/spa-identity-and-access-control-with-openid-connect-and-identityserver4</guid>
      <title>SPA Identity and Access Control with OpenID Connect and IdentityServer4</title>
      <link>https://www.scottbrady.io/angular/spa-identity-and-access-control-with-openid-connect-and-identityserver4</link>
      <description>Recording from .NET South West looking at how to protect an Angular application using OpenID Connect</description>
      <category>Angular</category>
      <pubDate>Thu, 26 Jul 2018 00:00:00 GMT</pubDate>
    </item>
    <item>
      <guid isPermaLink="true">https://www.scottbrady.io/aspnet-identity/getting-started-with-identitymanager2</guid>
      <title>Getting Started with IdentityManager2</title>
      <link>https://www.scottbrady.io/aspnet-identity/getting-started-with-identitymanager2</link>
      <description>An introduction to IdentityManager2, including ASP.NET Core Identity, and IdentityServer4 integration.</description>
      <category>ASP.NET Identity</category>
      <pubDate>Mon, 09 Jul 2018 00:00:00 GMT</pubDate>
    </item>
    <item>
      <guid isPermaLink="true">https://www.scottbrady.io/fido/a-fido2-primer-and-proof-of-concept-using-aspnet-core</guid>
      <title>A FIDO2 Primer and Proof of Concept using ASP.NET Core</title>
      <link>https://www.scottbrady.io/fido/a-fido2-primer-and-proof-of-concept-using-aspnet-core</link>
      <description>Getting to grips with FIDO2 and WebAuthn, including a basic implementation in ASP.NET Core</description>
      <category>FIDO</category>
      <pubDate>Thu, 05 Jul 2018 00:00:00 GMT</pubDate>
    </item>
    <item>
      <guid isPermaLink="true">https://www.scottbrady.io/identity-server/aspnet-core-swagger-ui-authorization-using-identityserver4</guid>
      <title>ASP.NET Core Swagger UI Authorization using IdentityServer4</title>
      <link>https://www.scottbrady.io/identity-server/aspnet-core-swagger-ui-authorization-using-identityserver4</link>
      <description>How to keep your Swagger UI test tool working after protecting your API using IdentityServer 4 (OAuth).</description>
      <category>Identity Server</category>
      <pubDate>Wed, 13 Jun 2018 00:00:00 GMT</pubDate>
    </item>
    <item>
      <guid isPermaLink="true">https://www.scottbrady.io/blockchain-identity/lessons-learned-from-integrating-with-blockchain-identity-providers</guid>
      <title>Lessons Learned from Integrating with Blockchain Identity Providers</title>
      <link>https://www.scottbrady.io/blockchain-identity/lessons-learned-from-integrating-with-blockchain-identity-providers</link>
      <description>A cautionary tale of reinventing the wheel and history repeating itself in the name of blockchain</description>
      <category>Blockchain Identity</category>
      <pubDate>Tue, 12 Jun 2018 00:00:00 GMT</pubDate>
    </item>
    <item>
      <guid isPermaLink="true">https://www.scottbrady.io/oauth/oauth-is-not-authentication</guid>
      <title>OAuth is Not Authentication</title>
      <link>https://www.scottbrady.io/oauth/oauth-is-not-authentication</link>
      <description>The reasons why OAuth is not an authentication protocol, and why without using open standards such as OpenID Connect, should not be hacked to become one.</description>
      <category>OAuth</category>
      <pubDate>Tue, 24 Apr 2018 00:00:00 GMT</pubDate>
    </item>
    <item>
      <guid isPermaLink="true">https://www.scottbrady.io/oauth/an-introduction-to-the-oauth-device-flow</guid>
      <title>An Introduction to the OAuth Device Flow</title>
      <link>https://www.scottbrady.io/oauth/an-introduction-to-the-oauth-device-flow</link>
      <description>One of the few legitimate uses for the ROPC grant type is for browserless devices. Luckily, the OAuth working group now has a solution for that.</description>
      <category>OAuth</category>
      <pubDate>Tue, 27 Mar 2018 00:00:00 GMT</pubDate>
    </item>
    <item>
      <guid isPermaLink="true">https://www.scottbrady.io/aspnet-identity/implementing-mediums-passwordless-authentication-using-aspnet-core-identity</guid>
      <title>Implementing Medium's Passwordless Authentication using ASP.NET Core Identity</title>
      <link>https://www.scottbrady.io/aspnet-identity/implementing-mediums-passwordless-authentication-using-aspnet-core-identity</link>
      <description>How to use passwordless authentication via one-time, user specific login links sent via email. Just like Medium!</description>
      <category>ASP.NET Identity</category>
      <pubDate>Tue, 06 Mar 2018 00:00:00 GMT</pubDate>
    </item>
    <item>
      <guid isPermaLink="true">https://www.scottbrady.io/blockchain-identity/technical-review-of-civics-secure-identity-platform</guid>
      <title>Technical Review of Civic's Secure Identity Platform</title>
      <link>https://www.scottbrady.io/blockchain-identity/technical-review-of-civics-secure-identity-platform</link>
      <description>A technical review of the Civic SIP, from the perspective of an identity and authentication professional</description>
      <category>Blockchain Identity</category>
      <pubDate>Mon, 05 Feb 2018 00:00:00 GMT</pubDate>
    </item>
    <item>
      <guid isPermaLink="true">https://www.scottbrady.io/blockchain-identity/integrating-with-civic-sip-using-aspnet-core</guid>
      <title>Integrating with Civic SIP using ASP.NET Core</title>
      <link>https://www.scottbrady.io/blockchain-identity/integrating-with-civic-sip-using-aspnet-core</link>
      <description>Integrating with Civic SIP using an ASP.NET Core web application</description>
      <category>Blockchain Identity</category>
      <pubDate>Mon, 05 Feb 2018 00:00:00 GMT</pubDate>
    </item>
    <item>
      <guid isPermaLink="true">https://www.scottbrady.io/c-sharp/jwt-signing-using-ecdsa-in-dotnet-core</guid>
      <title>JWT Signing using ECDSA in .NET Core</title>
      <link>https://www.scottbrady.io/c-sharp/jwt-signing-using-ecdsa-in-dotnet-core</link>
      <description>How to sign and verify a JSON Web Token (JWT) using Elliptic Curve Digital Signature Algorithms (ECDSA) in .NET Core</description>
      <category>C#</category>
      <pubDate>Fri, 02 Feb 2018 00:00:00 GMT</pubDate>
    </item>
    <item>
      <guid isPermaLink="true">https://www.scottbrady.io/kotlin/json-web-token-verification-in-ktor-using-kotlin-and-java-jwt</guid>
      <title>JSON Web Token Verification in Ktor using Kotlin and Java-JWT</title>
      <link>https://www.scottbrady.io/kotlin/json-web-token-verification-in-ktor-using-kotlin-and-java-jwt</link>
      <description>Verifying JSON Web Tokens usng the Java-JWT library and protecting access to a Ktor API</description>
      <category>Kotlin</category>
      <pubDate>Mon, 20 Nov 2017 00:00:00 GMT</pubDate>
    </item>
    <item>
      <guid isPermaLink="true">https://www.scottbrady.io/kotlin/experimenting-with-kotlin-and-oauth</guid>
      <title>Experimenting with Kotlin and OAuth</title>
      <link>https://www.scottbrady.io/kotlin/experimenting-with-kotlin-and-oauth</link>
      <description>Getting to grips with Kotlin using OAuth client credentials and API requests</description>
      <category>Kotlin</category>
      <pubDate>Wed, 15 Nov 2017 00:00:00 GMT</pubDate>
    </item>
    <item>
      <guid isPermaLink="true">https://www.scottbrady.io/openid-connect/silent-refresh-refreshing-access-tokens-when-using-the-implicit-flow</guid>
      <title>Silent Refresh - Refreshing Access Tokens when using the Implicit Flow</title>
      <link>https://www.scottbrady.io/openid-connect/silent-refresh-refreshing-access-tokens-when-using-the-implicit-flow</link>
      <description>Understanding silent refresh and how to implement it using Angular CLI and oidc-client</description>
      <category>OpenID Connect</category>
      <pubDate>Wed, 01 Nov 2017 00:00:00 GMT</pubDate>
    </item>
    <item>
      <guid isPermaLink="true">https://www.scottbrady.io/aspnet-identity/improving-the-aspnet-core-identity-password-hasher</guid>
      <title>Better Password Hashing in ASP.NET Core</title>
      <link>https://www.scottbrady.io/aspnet-identity/improving-the-aspnet-core-identity-password-hasher</link>
      <description>Learn how password hashing works in ASP.NET Core Identity and how to secure the default implementation or improve it using bcrypt or Argon2 with a secure migration.</description>
      <category>ASP.NET Identity</category>
      <pubDate>Mon, 30 Oct 2017 00:00:00 GMT</pubDate>
    </item>
    <item>
      <guid isPermaLink="true">https://www.scottbrady.io/oauth/why-the-resource-owner-password-credentials-grant-type-is-not-authentication-nor-suitable-for-modern-applications</guid>
      <title>Don't use the OAuth password grant type</title>
      <link>https://www.scottbrady.io/oauth/why-the-resource-owner-password-credentials-grant-type-is-not-authentication-nor-suitable-for-modern-applications</link>
      <description>Learn why you should not use OAuth's Resource Owner Password Credentials (ROPC) grant.</description>
      <category>OAuth</category>
      <pubDate>Tue, 29 Aug 2017 00:00:00 GMT</pubDate>
    </item>
    <item>
      <guid isPermaLink="true">https://www.scottbrady.io/angular/spa-authentiction-using-openid-connect-angular-cli-and-oidc-client</guid>
      <title>SPA Authentication using OpenID Connect, Angular CLI and oidc-client</title>
      <link>https://www.scottbrady.io/angular/spa-authentiction-using-openid-connect-angular-cli-and-oidc-client</link>
      <description>How to add authentication to an Angular SPA using the oidc-client OpenID Connect client library</description>
      <category>Angular</category>
      <pubDate>Thu, 03 Aug 2017 00:00:00 GMT</pubDate>
    </item>
    <item>
      <guid isPermaLink="true">https://www.scottbrady.io/openid-connect/getting-started-with-oidc-provider</guid>
      <title>Getting started with oidc-provider</title>
      <link>https://www.scottbrady.io/openid-connect/getting-started-with-oidc-provider</link>
      <description>Tutorial for getting the node oidc-provider library up and running.</description>
      <category>OpenID Connect</category>
      <pubDate>Mon, 24 Jul 2017 00:00:00 GMT</pubDate>
    </item>
    <item>
      <guid isPermaLink="true">https://www.scottbrady.io/oauth/the-wrong-ways-to-protect-an-api</guid>
      <title>The Wrong Ways to Protect an API</title>
      <link>https://www.scottbrady.io/oauth/the-wrong-ways-to-protect-an-api</link>
      <description>The previous alternatives to OAuth and authorizing access to an API and why we no longer use them.</description>
      <category>OAuth</category>
      <pubDate>Thu, 06 Jul 2017 00:00:00 GMT</pubDate>
    </item>
    <item>
      <guid isPermaLink="true">https://www.scottbrady.io/identity-server/identityserver-4-sharepoint-integration-using-ws-federation</guid>
      <title>IdentityServer SharePoint Integration using WS-Federation</title>
      <link>https://www.scottbrady.io/identity-server/identityserver-4-sharepoint-integration-using-ws-federation</link>
      <description>How to use IdentityServer with WS-Federation as a Trusted Identity Provider in SharePoint 2013.</description>
      <category>Identity Server</category>
      <pubDate>Sun, 23 Apr 2017 00:00:00 GMT</pubDate>
    </item>
    <item>
      <guid isPermaLink="true">https://www.scottbrady.io/azure/cloudflare-origin-certificates-and-azure-app-services</guid>
      <title>Cloudflare Origin Certificates and Azure App Services</title>
      <link>https://www.scottbrady.io/azure/cloudflare-origin-certificates-and-azure-app-services</link>
      <description>Using Cloudflare Origin Certificates within Azure App Services using a pfx via openssl</description>
      <category>Azure</category>
      <pubDate>Tue, 18 Apr 2017 00:00:00 GMT</pubDate>
    </item>
    <item>
      <guid isPermaLink="true">https://www.scottbrady.io/docker/aspnet-core-and-docker-environment-variables</guid>
      <title>ASP.NET Core and Docker Environment Variables</title>
      <link>https://www.scottbrady.io/docker/aspnet-core-and-docker-environment-variables</link>
      <description>Configuring ASP.NET Core application settings when running within Docker containers</description>
      <category>Docker</category>
      <pubDate>Tue, 18 Apr 2017 00:00:00 GMT</pubDate>
    </item>
    <item>
      <guid isPermaLink="true">https://www.scottbrady.io/aspnet-identity/aspnet-identity-2-configurable-password-hasher</guid>
      <title>ASP.NET Identity 2 Configurable Password Hasher</title>
      <link>https://www.scottbrady.io/aspnet-identity/aspnet-identity-2-configurable-password-hasher</link>
      <description>A method of improving the existing ASP.NET Identity 2 Password Hasher by updating the iteration count to be configurable instead of hardcoded.</description>
      <category>ASP.NET Identity</category>
      <pubDate>Mon, 06 Mar 2017 00:00:00 GMT</pubDate>
    </item>
    <item>
      <guid isPermaLink="true">https://www.scottbrady.io/windows/yet-another-makecert-tutorial</guid>
      <title>Yet Another MakeCert Tutorial</title>
      <link>https://www.scottbrady.io/windows/yet-another-makecert-tutorial</link>
      <description>Yet another tutorial on using MakeCert, this time framed around creating IdentityServer token signing certificates.</description>
      <category>Windows</category>
      <pubDate>Sun, 05 Mar 2017 00:00:00 GMT</pubDate>
    </item>
    <item>
      <guid isPermaLink="true">https://www.scottbrady.io/general/software-design-and-development-conference-2017</guid>
      <title>Software Design and Development Conference 2017</title>
      <link>https://www.scottbrady.io/general/software-design-and-development-conference-2017</link>
      <description>Software Design and Development Conference (SDDConf) 2017 speaking announcement.</description>
      <category>General</category>
      <pubDate>Wed, 01 Feb 2017 00:00:00 GMT</pubDate>
    </item>
    <item>
      <guid isPermaLink="true">https://www.scottbrady.io/oauth/consuming-external-oauth-services-using-identitymodel</guid>
      <title>Consuming External OAuth Services using IdentityModel</title>
      <link>https://www.scottbrady.io/oauth/consuming-external-oauth-services-using-identitymodel</link>
      <description>Pluralsight audition demonstrating the use of the IdentityModel library to consume OAuth protected resources</description>
      <category>OAuth</category>
      <pubDate>Tue, 15 Nov 2016 00:00:00 GMT</pubDate>
    </item>
    <item>
      <guid isPermaLink="true">https://www.scottbrady.io/entity-framework/entity-framework-core-in-memory-testing</guid>
      <title>Entity Framework Core In Memory Testing</title>
      <link>https://www.scottbrady.io/entity-framework/entity-framework-core-in-memory-testing</link>
      <description>Entity Framework Core testing of relational and non-releational databases using in-memory database providers</description>
      <category>Entity Framework</category>
      <pubDate>Thu, 29 Sep 2016 00:00:00 GMT</pubDate>
    </item>
    <item>
      <guid isPermaLink="true">https://www.scottbrady.io/identity-server/getting-started-with-identityserver-4</guid>
      <title>Getting Started with IdentityServer4 and Duende IdentityServer</title>
      <link>https://www.scottbrady.io/identity-server/getting-started-with-identityserver-4</link>
      <description>A beginners guide to IdentityServer and OpenID Connect, starting with an empty project and ending with a near production ready environment.</description>
      <category>Identity Server</category>
      <pubDate>Thu, 22 Sep 2016 00:00:00 GMT</pubDate>
    </item>
    <item>
      <guid isPermaLink="true">https://www.scottbrady.io/azure/getting-started-with-the-azure-documentdb-dotnet-sdk</guid>
      <title>Getting Started with the Azure DocumentDB .NET SDK</title>
      <link>https://www.scottbrady.io/azure/getting-started-with-the-azure-documentdb-dotnet-sdk</link>
      <description>A guide to creating your first repository using the Azure DocumentDB .NET SDK</description>
      <category>Azure</category>
      <pubDate>Wed, 06 Jul 2016 00:00:00 GMT</pubDate>
    </item>
    <item>
      <guid isPermaLink="true">https://www.scottbrady.io/general/ndc-oslo-2016</guid>
      <title>NDC Oslo 2016</title>
      <link>https://www.scottbrady.io/general/ndc-oslo-2016</link>
      <description>A review of NDC Oslo 2016</description>
      <category>General</category>
      <pubDate>Fri, 10 Jun 2016 00:00:00 GMT</pubDate>
    </item>
    <item>
      <guid isPermaLink="true">https://www.scottbrady.io/katana/owin-basic-authentication</guid>
      <title>OWIN Basic Authentication</title>
      <link>https://www.scottbrady.io/katana/owin-basic-authentication</link>
      <description>Basic Authentication, why you shouldn't be using it and how to integrate it into your OWIN pipeline using IdentityModel.Owin.BasicAuthentication</description>
      <category>Katana</category>
      <pubDate>Fri, 20 May 2016 00:00:00 GMT</pubDate>
    </item>
    <item>
      <guid isPermaLink="true">https://www.scottbrady.io/katana/ws-federation-token-encryption-using-microsoft-katana</guid>
      <title>WS-Federation Token Encryption using Microsoft Katana</title>
      <link>https://www.scottbrady.io/katana/ws-federation-token-encryption-using-microsoft-katana</link>
      <description>How to implement SAML token decryption using the latest WS-Federation Katana components.</description>
      <category>Katana</category>
      <pubDate>Sun, 08 May 2016 00:00:00 GMT</pubDate>
    </item>
    <item>
      <guid isPermaLink="true">https://www.scottbrady.io/aspnet-identity/identity-manager-using-aspnet-identity</guid>
      <title>Identity Manager using ASP.NET Identity</title>
      <link>https://www.scottbrady.io/aspnet-identity/identity-manager-using-aspnet-identity</link>
      <description>How and when to use Identity Manager with an ASP.NET Identity database, including how to secure the UI using OpenID Connect via Identity Server.</description>
      <category>ASP.NET Identity</category>
      <pubDate>Fri, 08 Apr 2016 00:00:00 GMT</pubDate>
    </item>
    <item>
      <guid isPermaLink="true">https://www.scottbrady.io/windows/iis-the-process-cannot-access-the-file-because-it-is-being-used-by-another-process</guid>
      <title>IIS - The Process Cannot Access the File Because it is Being Used by Another Process</title>
      <link>https://www.scottbrady.io/windows/iis-the-process-cannot-access-the-file-because-it-is-being-used-by-another-process</link>
      <description>How to fix a IIS website that refuses to start due to ports being used by another process.</description>
      <category>Windows</category>
      <pubDate>Wed, 06 Apr 2016 00:00:00 GMT</pubDate>
    </item>
    <item>
      <guid isPermaLink="true">https://www.scottbrady.io/general/how-i-prepared-for-my-first-technical-presentation</guid>
      <title>How I Prepared For My First Technical Presentation</title>
      <link>https://www.scottbrady.io/general/how-i-prepared-for-my-first-technical-presentation</link>
      <description>My experience of how to successfully prepare and deliver your first ever technical presentation.</description>
      <category>General</category>
      <pubDate>Tue, 29 Mar 2016 00:00:00 GMT</pubDate>
    </item>
    <item>
      <guid isPermaLink="true">https://www.scottbrady.io/general/ten-steps-to-learn-anything-quickly-review</guid>
      <title>Ten Steps to Learn Anything Quickly Review</title>
      <link>https://www.scottbrady.io/general/ten-steps-to-learn-anything-quickly-review</link>
      <description>10 Steps to Learn Anything Quickly is an online course created by John Sonmez, the man behind Simple Programmer and Soft Skills: The software developer's life manual.</description>
      <category>General</category>
      <pubDate>Sat, 30 Jan 2016 00:00:00 GMT</pubDate>
    </item>
    <item>
      <guid isPermaLink="true">https://www.scottbrady.io/identity-server/identity-server-3-using-ws-federation</guid>
      <title>Identity Server 3 using WS-Federation</title>
      <link>https://www.scottbrady.io/identity-server/identity-server-3-using-ws-federation</link>
      <description>Identity Server 3 is by design an OpenID Connect Provider, however it does also give various features to enable developers to use the WS-Federation protocol.</description>
      <category>Identity Server</category>
      <pubDate>Sat, 30 Jan 2016 00:00:00 GMT</pubDate>
    </item>
    <item>
      <guid isPermaLink="true">https://www.scottbrady.io/email-verification/python-email-verification-script</guid>
      <title>Python Email Verification Script</title>
      <link>https://www.scottbrady.io/email-verification/python-email-verification-script</link>
      <description>Email verification is no secret. All it requires is a little knowledge of the SMTP protocol and your programming language of choice.</description>
      <category>Email Verification</category>
      <pubDate>Tue, 24 Nov 2015 00:00:00 GMT</pubDate>
    </item>
    <item>
      <guid isPermaLink="true">https://www.scottbrady.io/katana/creating-owin-middleware-using-microsoft-katana</guid>
      <title>Creating OWIN Middleware using Microsoft Katana</title>
      <link>https://www.scottbrady.io/katana/creating-owin-middleware-using-microsoft-katana</link>
      <description>Step by step walkthrough for creating OWIN/Katana middleware using the OwinMiddleware abstraction, covering response header and body manipulation and some of the most common issues and gotchas.</description>
      <category>Katana</category>
      <pubDate>Sun, 30 Aug 2015 00:00:00 GMT</pubDate>
    </item>
    <item>
      <guid isPermaLink="true">https://www.scottbrady.io/identity-server/identity-server-3-using-aspnet-identity</guid>
      <title>Identity Server 3 using ASP.NET Identity</title>
      <link>https://www.scottbrady.io/identity-server/identity-server-3-using-aspnet-identity</link>
      <description>Configuring Identity Server 3 to use an ASP.NET Identity user store. Covering various registration options, default behaviour and extensibility scenarios.</description>
      <category>Identity Server</category>
      <pubDate>Sun, 16 Aug 2015 00:00:00 GMT</pubDate>
    </item>
    <item>
      <guid isPermaLink="true">https://www.scottbrady.io/aspnet-identity/quick-and-easy-aspnet-identity-multitenancy</guid>
      <title>Quick and Easy ASP.NET Identity Multitenancy</title>
      <link>https://www.scottbrady.io/aspnet-identity/quick-and-easy-aspnet-identity-multitenancy</link>
      <description>The simplest way of making ASP.NET Identity support multitenancy by extending the default Entity Framework implementation.</description>
      <category>ASP.NET Identity</category>
      <pubDate>Sat, 08 Aug 2015 00:00:00 GMT</pubDate>
    </item>
    <item>
      <guid isPermaLink="true">https://www.scottbrady.io/c-sharp/deserializing-a-json-enumerated-string-to-a-different-c-sharp-enumerated-type</guid>
      <title>Deserializing a JSON Enumerated String to a Different C# Enumerated Type</title>
      <link>https://www.scottbrady.io/c-sharp/deserializing-a-json-enumerated-string-to-a-different-c-sharp-enumerated-type</link>
      <description>Solution for converting a JSON enumerated string to a completely different C# enumerated type during deserialization.</description>
      <category>C#</category>
      <pubDate>Mon, 22 Jun 2015 00:00:00 GMT</pubDate>
    </item>
    <item>
      <guid isPermaLink="true">https://www.scottbrady.io/katana/owin-katana-introduction</guid>
      <title>OWIN Katana Introduction</title>
      <link>https://www.scottbrady.io/katana/owin-katana-introduction</link>
      <description>A high level introduction to the OWIN specification and Microsoft's Katana implementation.</description>
      <category>Katana</category>
      <pubDate>Mon, 25 May 2015 00:00:00 GMT</pubDate>
    </item>
    <item>
      <guid isPermaLink="true">https://www.scottbrady.io/general/software-design-and-development-conference-2015</guid>
      <title>Software Design and Development Conference 2015</title>
      <link>https://www.scottbrady.io/general/software-design-and-development-conference-2015</link>
      <description>My experiences at the Software Design and Development Conference 2015.</description>
      <category>General</category>
      <pubDate>Fri, 15 May 2015 00:00:00 GMT</pubDate>
    </item>
    <item>
      <guid isPermaLink="true">https://www.scottbrady.io/identity-server/identity-server-3-standalone-implementation-part-3</guid>
      <title>Identity Server 3 Standalone Implementation Part 3</title>
      <link>https://www.scottbrady.io/identity-server/identity-server-3-standalone-implementation-part-3</link>
      <description>A basic stand alone implementation of Thinktecture's Identity Server 3. Part 3 of this guide details the implementation of an OWIN/Katana client, using a Hybrid flow, to interact with the Identity Server implementation covered in part 1 and look into some of the features of the Katana OpenID Connect middleware.</description>
      <category>Identity Server</category>
      <pubDate>Sun, 03 May 2015 00:00:00 GMT</pubDate>
    </item>
    <item>
      <guid isPermaLink="true">https://www.scottbrady.io/identity-server/identity-server-3-standalone-implementation-part-2</guid>
      <title>Identity Server 3 Standalone Implementation Part 2</title>
      <link>https://www.scottbrady.io/identity-server/identity-server-3-standalone-implementation-part-2</link>
      <description>A basic stand alone implementation of Thinktecture's Identity Server 3. Part 2 of this guide details the implementation of a form post client to explicitly interact with the Identity Server implementation covered in part 1 and dig into some of OpenID Connect's core concepts.</description>
      <category>Identity Server</category>
      <pubDate>Sat, 11 Apr 2015 00:00:00 GMT</pubDate>
    </item>
    <item>
      <guid isPermaLink="true">https://www.scottbrady.io/identity-server/identity-server-3-standalone-implementation-part-1</guid>
      <title>Identity Server 3 Standalone Implementation Part 1</title>
      <link>https://www.scottbrady.io/identity-server/identity-server-3-standalone-implementation-part-1</link>
      <description>A basic stand alone implementation of Thinktecture's Identity Server 3. Part 1 of this guide details the Identity Server implementation itself using the default implicit flow and the necessary configuration to do this.</description>
      <category>Identity Server</category>
      <pubDate>Wed, 01 Apr 2015 00:00:00 GMT</pubDate>
    </item>
    <item>
      <guid isPermaLink="true">https://www.scottbrady.io/identity-server/thinktecture-identity-server-3</guid>
      <title>Thinktecture Identity Server 3</title>
      <link>https://www.scottbrady.io/identity-server/thinktecture-identity-server-3</link>
      <description>The IdentityServer project is no longer associated with Thinktecture. For up-to-date details, check out IdentityServer4 or Duende IdentityServer. Otherwise read on for a snapshot of the IdentityServer project from 2015.</description>
      <category>Identity Server</category>
      <pubDate>Sat, 07 Feb 2015 00:00:00 GMT</pubDate>
    </item>
    <item>
      <guid isPermaLink="true">https://www.scottbrady.io/openid-connect/openid-connect-flows</guid>
      <title>OpenID Connect Flows</title>
      <link>https://www.scottbrady.io/openid-connect/openid-connect-flows</link>
      <description>Learn about OpenID Connect's authorization code, implicit, and hybrid flows. See how each flow works, when to use it, and how to secure it.</description>
      <category>OpenID Connect</category>
      <pubDate>Tue, 20 Jan 2015 00:00:00 GMT</pubDate>
    </item>
    <item>
      <guid isPermaLink="true">https://www.scottbrady.io/openid-connect/openid-connect-endpoints</guid>
      <title>OpenID Connect Endpoints</title>
      <link>https://www.scottbrady.io/openid-connect/openid-connect-endpoints</link>
      <description>An explanation of the various OpenID Connect endpoints and what they can be used for.</description>
      <category>OpenID Connect</category>
      <pubDate>Sun, 18 Jan 2015 00:00:00 GMT</pubDate>
    </item>
    <item>
      <guid isPermaLink="true">https://www.scottbrady.io/openid-connect/openid-connect-overview</guid>
      <title>What is OpenID Connect?</title>
      <link>https://www.scottbrady.io/openid-connect/openid-connect-overview</link>
      <description>Learn how OpenID Connect (OIDC) extends OAuth 2 by adding a layer of identity, solving user authentication and Single Sign-On (SSO).</description>
      <category>OpenID Connect</category>
      <pubDate>Thu, 15 Jan 2015 00:00:00 GMT</pubDate>
    </item>
    <item>
      <guid isPermaLink="true">https://www.scottbrady.io/general/why-blog</guid>
      <title>Why Blog</title>
      <link>https://www.scottbrady.io/general/why-blog</link>
      <description>An introductory article on blogging and my reasons for doing so.</description>
      <category>General</category>
      <pubDate>Tue, 13 Jan 2015 00:00:00 GMT</pubDate>
    </item>
  </channel>
</rss>