41554 blogs · [ { "id": "01a087dc-c4ce-7121-a02d-64f67eaf8260", "title": "CTO Craft Con London 2026", "url": "https://www.scottbrady.io/general/cto-craft-con-london-2026", "published_at": "2026-03-13T00:00:00+00:00" }, { "id": "01a087dc-c4ce-7121-a02d-64f67f53dd7c", "title": "Year in review: 2024", "url": "https://www.scottbrady.io/general/year-in-review-2024", "published_at": "2024-12-31T00:00:00+00:00" }, { "id": "01a087dc-c4ce-7121-a02d-64f67f63cdb4", "title": "Understanding WS-Federation: A modern primer for an obsolete protocol", "url": "https://www.scottbrady.io/ws-federation/understanding-ws-federation", "published_at": "2024-04-09T00:00:00+00:00" }, { "id": "01a087dc-c4ce-7121-a02d-64f67fb1ade1", "title": "Year in review: 2023", "url": "https://www.scottbrady.io/general/year-in-review-2023", "published_at": "2023-12-31T00:00:00+00:00" }, { "id": "01a087dc-c4ce-7121-a02d-64f67fd6b800", "title": "Book notes & reflections: An Elegant Puzzle", "url": "https://www.scottbrady.io/leadership/book-notes-elegant-puzzle", "published_at": "2023-09-16T00:00:00+00:00" }, { "id": "01a087dc-c4ce-7121-a02d-64f6807a1d78", "title": "Loading RSA Keys in .NET", "url": "https://www.scottbrady.io/c-sharp/rsa-key-loading-dotnet", "published_at": "2023-03-19T00:00:00+00:00" }, { "id": "01a087dc-c4ce-7121-a02d-64f681625a64", "title": "Challenges 7-12: Implementing and breaking AES ECB", "url": "https://www.scottbrady.io/cryptopals/implementing-and-breaking-aes-ecb", "published_at": "2023-02-05T00:00:00+00:00" }, { "id": "01a087dc-c4ce-7121-a02d-64f681ea2941", "title": "Year in review: 2022", "url": "https://www.scottbrady.io/general/year-in-review-2022", "published_at": "2022-12-31T00:00:00+00:00" }, { "id": "01a087dc-c4ce-7121-a02d-64f682807bfc", "title": "Book notes & reflections: The Making of a Manager", "url": "https://www.scottbrady.io/leadership/book-notes-making-of-a-manager", "published_at": "2022-11-24T00:00:00+00:00" }, { "id": "01a087dc-c4ce-7121-a02d-64f682bd1969", "title": "OAuth client authentication - more than just client secrets", "url": "https://www.scottbrady.io/oauth/client-authentication", "published_at": "2022-10-10T00:00:00+00:00" }, { "id": "01a087dc-c4ce-7121-a02d-64f682d3542a", "title": "Book notes & reflections: The Art of Leadership", "url": "https://www.scottbrady.io/leadership/book-notes-art-of-leadership", "published_at": "2022-10-02T00:00:00+00:00" }, { "id": "01a087dc-c4ce-7121-a02d-64f682f1c3ac", "title": "JWT creation and validation in Python using Authlib", "url": "https://www.scottbrady.io/python/authlib-python-jwt", "published_at": "2022-08-25T00:00:00+00:00" }, { "id": "01a087dc-c4ce-7121-a02d-64f683118055", "title": "Understanding JSON Web Encryption (JWE)", "url": "https://www.scottbrady.io/jose/json-web-encryption", "published_at": "2022-08-17T00:00:00+00:00" }, { "id": "01a087dc-c4ce-7121-a02d-64f683250b35", "title": "New Pluralsight Course: JSON Web Token (JWT) Fundamentals", "url": "https://www.scottbrady.io/oauth/pluralsight-jwt-fundamentals", "published_at": "2022-08-10T00:00:00+00:00" }, { "id": "01a087dc-c4ce-7121-a02d-64f683d85549", "title": "Open Banking for OAuth Developers", "url": "https://www.scottbrady.io/oauth/open-banking-uk", "published_at": "2022-03-08T00:00:00+00:00" }, { "id": "01a087dc-c4ce-7121-a02d-64f684a30140", "title": "Step-up authentication with OAuth and OpenID Connect", "url": "https://www.scottbrady.io/oauth/step-up-authentication", "published_at": "2022-02-28T00:00:00+00:00" }, { "id": "01a087dc-c4ce-7121-a02d-64f6859ca69f", "title": "Year in Review: 2021", "url": "https://www.scottbrady.io/general/year-in-review-2021", "published_at": "2021-12-31T00:00:00+00:00" }, { "id": "01a087dc-c4ce-7121-a02d-64f68609b076", "title": "Umbraco frontend membership SSO using OpenID Connect", "url": "https://www.scottbrady.io/umbraco/frontend-members-sso-openid-connect", "published_at": "2021-11-30T00:00:00+00:00" }, { "id": "01a087dc-c4cf-73d2-9a67-3d3c4354f3a2", "title": "Goodbye, Rock Solid Knowledge; Hello, 10x Banking", "url": "https://www.scottbrady.io/general/rock-solid-knowledge-to-10x-banking", "published_at": "2021-11-28T00:00:00+00:00" }, { "id": "01a087dc-c4cf-73d2-9a67-3d3c440a7bca", "title": "Understanding identity tokens", "url": "https://www.scottbrady.io/openid-connect/identity-tokens", "published_at": "2021-11-25T00:00:00+00:00" }, { "id": "01a087dc-c4cf-73d2-9a67-3d3c45004edc", "title": "Umbraco backoffice SSO with OpenID Connect", "url": "https://www.scottbrady.io/umbraco/backoffice-sso-openid-connect", "published_at": "2021-11-11T00:00:00+00:00" }, { "id": "01a087dc-c4cf-73d2-9a67-3d3c45b34647", "title": "How I use Polywork to overcome impostor syndrome", "url": "https://www.scottbrady.io/soft-skills/polywork-vs-impostor-syndrome", "published_at": "2021-10-12T00:00:00+00:00" }, { "id": "01a087dc-c4cf-73d2-9a67-3d3c45eb2c89", "title": "How to sign XML using RSA in .NET", "url": "https://www.scottbrady.io/c-sharp/xml-signing-dotnet", "published_at": "2021-09-21T00:00:00+00:00" }, { "id": "01a087dc-c4cf-73d2-9a67-3d3c4646fe45", "title": "ECDSA and Custom XML Signatures in .NET", "url": "https://www.scottbrady.io/c-sharp/ecdsa-xml-dotnet", "published_at": "2021-09-21T00:00:00+00:00" }, { "id": "01a087dc-c4cf-73d2-9a67-3d3c4659ba80", "title": "Loading Elliptic Curve (EC) Keys in .NET", "url": "https://www.scottbrady.io/c-sharp/ecdsa-key-loading", "published_at": "2021-08-23T00:00:00+00:00" }, { "id": "01a087dc-c4cf-73d2-9a67-3d3c46e695ac", "title": "Umbraco MVP 2021", "url": "https://www.scottbrady.io/umbraco/mvp-2021", "published_at": "2021-06-10T00:00:00+00:00" }, { "id": "01a087dc-c4cf-73d2-9a67-3d3c479f94fc", "title": "Client Authentication vs. PKCE: Do you need both?", "url": "https://www.scottbrady.io/oauth/client-authentication-vs-pkce", "published_at": "2021-06-01T00:00:00+00:00" }, { "id": "01a087dc-c4cf-73d2-9a67-3d3c488dad2a", "title": "Authenticated Encryption in .NET with AES-GCM", "url": "https://www.scottbrady.io/c-sharp/aes-gcm-dotnet", "published_at": "2021-05-20T00:00:00+00:00" }, { "id": "01a087dc-c4cf-73d2-9a67-3d3c48e1742b", "title": "Beware of Password Shucking", "url": "https://www.scottbrady.io/authentication/beware-of-password-shucking", "published_at": "2021-04-13T00:00:00+00:00" }, { "id": "01a087dc-c4cf-73d2-9a67-3d3c490ed5d7", "title": "Integrating ASP.NET Identity Password Policies with Password Managers", "url": "https://www.scottbrady.io/aspnet-identity/aspnet-identity-password-policies-with-password-managers", "published_at": "2021-03-15T00:00:00+00:00" }, { "id": "01a087dc-c4cf-73d2-9a67-3d3c49619110", "title": "Perfecting the password field with the HTML passwordrules attribute", "url": "https://www.scottbrady.io/authentication/perfecting-the-password-field-with-the-html-passwordrules-attribute", "published_at": "2021-01-27T00:00:00+00:00" }, { "id": "01a087dc-c4cf-73d2-9a67-3d3c49aa2457", "title": "New Pluralsight Course: Getting Started with SAML 2.0", "url": "https://www.scottbrady.io/saml/new-pluralsight-course-getting-started-with-saml-20", "published_at": "2021-01-21T00:00:00+00:00" }, { "id": "01a087dc-c4cf-73d2-9a67-3d3c4a7a4b56", "title": "Year in Review: 2020", "url": "https://www.scottbrady.io/general/year-in-review-2020", "published_at": "2020-12-29T00:00:00+00:00" }, { "id": "01a087dc-c4cf-73d2-9a67-3d3c4b0b301b", "title": "OAuth is Not User Authorization", "url": "https://www.scottbrady.io/oauth/oauth-is-not-user-authorization", "published_at": "2020-11-30T00:00:00+00:00" }, { "id": "01a087dc-c4cf-73d2-9a67-3d3c4b7460a3", "title": "XChaCha20-Poly1305: A Primer with Examples in .NET", "url": "https://www.scottbrady.io/c-sharp/xchacha20-poly1305-dotnet", "published_at": "2020-10-11T00:00:00+00:00" }, { "id": "01a087dc-c4cf-73d2-9a67-3d3c4c3a89e1", "title": "PEM Loading in .NET Core and .NET 5", "url": "https://www.scottbrady.io/c-sharp/pem-loading-in-dotnet-core-and-dotnet", "published_at": "2020-09-21T00:00:00+00:00" }, { "id": "01a087dc-c4cf-73d2-9a67-3d3c4c85c219", "title": "Recording: Let's stop blaming our users for getting hacked when it is our problem to solve", "url": "https://www.scottbrady.io/fido/recording-lets-stop-blaming-our-users-for-getting-hacked-when-it-is-our-problem-to-solve", "published_at": "2020-08-20T00:00:00+00:00" }, { "id": "01a087dc-c4cf-73d2-9a67-3d3c4d530abc", "title": "JWTs: Which Signing Algorithm Should I Use?", "url": "https://www.scottbrady.io/jose/jwts-which-signing-algorithm-should-i-use", "published_at": "2020-08-18T00:00:00+00:00" }, { "id": "01a087dc-c4cf-73d2-9a67-3d3c4da03b80", "title": "Creating RSA Keys using OpenSSL", "url": "https://www.scottbrady.io/openssl/creating-rsa-keys-using-openssl", "published_at": "2020-08-05T00:00:00+00:00" }, { "id": "01a087dc-c4cf-73d2-9a67-3d3c4dc51a25", "title": "OAuth Security Workshop 2020", "url": "https://www.scottbrady.io/oauth/oauth-security-workshop-2020", "published_at": "2020-07-30T00:00:00+00:00" }, { "id": "01a087dc-c4cf-73d2-9a67-3d3c4eacbb18", "title": "Using ECDSA in IdentityServer4", "url": "https://www.scottbrady.io/identity-server/using-ecdsa-in-identityserver4", "published_at": "2020-07-22T00:00:00+00:00" }, { "id": "01a087dc-c4cf-73d2-9a67-3d3c4eeb70c0", "title": "Creating Elliptic Curve Keys using OpenSSL", "url": "https://www.scottbrady.io/openssl/creating-elliptical-curve-keys-using-openssl", "published_at": "2020-07-20T00:00:00+00:00" }, { "id": "01a087dc-c4cf-73d2-9a67-3d3c4eec1bf1", "title": "Adding Tailwind Utility Classes to your Bootstrap Website", "url": "https://www.scottbrady.io/general/adding-tailwind-utility-classes-to-your-bootstrap-website", "published_at": "2020-07-10T00:00:00+00:00" }, { "id": "01a087dc-c4cf-73d2-9a67-3d3c4faaec10", "title": "Using Biometrics in ASP.NET Core", "url": "https://www.scottbrady.io/fido/using-biometrics-in-aspnet-core", "published_at": "2020-07-06T00:00:00+00:00" }, { "id": "01a087dc-c4cf-73d2-9a67-3d3c503d27b7", "title": "EdDSA for JWT Signing in .NET Core", "url": "https://www.scottbrady.io/c-sharp/eddsa-for-jwt-signing-in-dotnet-core", "published_at": "2020-06-01T00:00:00+00:00" }, { "id": "01a087dc-c4cf-73d2-9a67-3d3c50d2d7db", "title": "Replacing JWTs with Branca and PASETO in .NET Core", "url": "https://www.scottbrady.io/c-sharp/replacing-jwts-with-branca-and-paseto-in-dotnet-core", "published_at": "2020-05-12T00:00:00+00:00" }, { "id": "01a087dc-c4cf-73d2-9a67-3d3c511fa1db", "title": "Alternatives to JSON Web Tokens (JWTs)", "url": "https://www.scottbrady.io/jose/alternatives-to-jwts", "published_at": "2020-04-28T00:00:00+00:00" }, { "id": "01a087dc-c4cf-73d2-9a67-3d3c517abe6c", "title": "Outsourcing IdentityServer4 Token Signing to Azure Key Vault", "url": "https://www.scottbrady.io/identity-server/outsourcing-identityserver4-token-signing-to-azure-key-vault", "published_at": "2020-03-30T00:00:00+00:00" }, { "id": "01a087dc-c4cf-73d2-9a67-3d3c5231c04a", "title": "Building a FIDO Authenticator with OpenSK", "url": "https://www.scottbrady.io/fido/building-a-fido-authenticator-with-opensk", "published_at": "2020-02-10T00:00:00+00:00" }, { "id": "01a087dc-c4cf-73d2-9a67-3d3c52e85309", "title": "IdentityManager2 2020 Update", "url": "https://www.scottbrady.io/aspnet-identity/identitymanager2-2020-update", "published_at": "2020-01-27T00:00:00+00:00" }, { "id": "01a087dc-c4cf-73d2-9a67-3d3c53a70e09", "title": "Defeating Phishing with FIDO2 for ASP.NET", "url": "https://www.scottbrady.io/fido/defeating-phishing-with-fido2-for-aspnet-core", "published_at": "2020-01-23T00:00:00+00:00" }, { "id": "01a087dc-c4cf-73d2-9a67-3d3c547c30f4", "title": "Refreshing your Legacy ASP.NET IdentityServer Client Applications (with PKCE)", "url": "https://www.scottbrady.io/aspnet/refreshing-your-legacy-aspnet-identityserver-client-applications", "published_at": "2020-01-16T00:00:00+00:00" }, { "id": "01a087dc-c4cf-73d2-9a67-3d3c54f62c55", "title": "Year in Review: 2019", "url": "https://www.scottbrady.io/general/year-in-review-2019", "published_at": "2019-12-28T00:00:00+00:00" }, { "id": "01a087dc-c4cf-73d2-9a67-3d3c55a37ff9", "title": "Supporting Custom JWT Signing Algorithms (ES256K) in .NET Core", "url": "https://www.scottbrady.io/c-sharp/supporting-custom-jwt-signing-algorithms-in-dotnet-core", "published_at": "2019-12-16T00:00:00+00:00" }, { "id": "01a087dc-c4cf-73d2-9a67-3d3c55b35085", "title": "Creating Signed JWTs using Nimbus JOSE + JWT", "url": "https://www.scottbrady.io/kotlin/creating-signed-jwts-using-nimbus-jose-jwt", "published_at": "2019-11-30T00:00:00+00:00" }, { "id": "01a087dc-c4cf-73d2-9a67-3d3c56544244", "title": "Using mkcert for ASP.NET Core Development", "url": "https://www.scottbrady.io/aspnet/using-mkcert-for-aspnet-core-development", "published_at": "2019-10-21T00:00:00+00:00" }, { "id": "01a087dc-c4cf-73d2-9a67-3d3c56c8fabe", "title": "New Pluralsight Course: ASP.NET Authentication - The Big Picture", "url": "https://www.scottbrady.io/authentication/new-pluralsight-course-aspnet-authentication-the-big-picture", "published_at": "2019-09-09T00:00:00+00:00" }, { "id": "01a087dc-c4cf-73d2-9a67-3d3c56fcd89e", "title": "JWT Signing using RSASSA-PSS in .NET Core", "url": "https://www.scottbrady.io/c-sharp/jwt-signing-using-rsassa-pss-in-dotnet-core", "published_at": "2019-07-29T00:00:00+00:00" }, { "id": "01a087dc-c4cf-73d2-9a67-3d3c57066438", "title": "Implementing Sign in with Apple in ASP.NET Core", "url": "https://www.scottbrady.io/openid-connect/implementing-sign-in-with-apple-in-aspnet-core", "published_at": "2019-06-08T00:00:00+00:00" }, { "id": "01a087dc-c4cf-73d2-9a67-3d3c578bd978", "title": "The Dangers of SAML IdP-Initiated SSO", "url": "https://www.scottbrady.io/saml/dangers-of-idp-initiated-sso", "published_at": "2019-06-06T00:00:00+00:00" }, { "id": "01a087dc-c4cf-73d2-9a67-3d3c57df93fe", "title": "Secure Remote Password (SRP) in C# and .NET Core", "url": "https://www.scottbrady.io/pake/srp-in-csharp-and-dotnet-core", "published_at": "2019-05-31T00:00:00+00:00" }, { "id": "01a087dc-c4cf-73d2-9a67-3d3c57e497a4", "title": "Encrypting Identity Tokens in IdentityServer4", "url": "https://www.scottbrady.io/identity-server/encrypting-identity-tokens-in-identityserver4", "published_at": "2019-04-10T00:00:00+00:00" }, { "id": "01a087dc-c4cf-73d2-9a67-3d3c58bca709", "title": "Generating a Crypto Random String in Dart", "url": "https://www.scottbrady.io/dart/generating-a-crypto-random-string-in-dart", "published_at": "2019-03-31T00:00:00+00:00" }, { "id": "01a087dc-c4cf-73d2-9a67-3d3c58d22d85", "title": "Solving the Cryptopals Crypto Challenges in C#", "url": "https://www.scottbrady.io/cryptopals/solving-the-cryptopals-crypto-challenges-in-c-sharp", "published_at": "2019-02-11T00:00:00+00:00" }, { "id": "01a087dc-c4cf-73d2-9a67-3d3c5992323f", "title": "Challenge 1: Base64 Encoding", "url": "https://www.scottbrady.io/cryptopals/base64-encoding", "published_at": "2019-02-11T00:00:00+00:00" }, { "id": "01a087dc-c4cf-73d2-9a67-3d3c59a591c0", "title": "Challenges 2-6: Caesar and Vigenère Ciphers", "url": "https://www.scottbrady.io/cryptopals/caesar-and-vigenere-ciphers", "published_at": "2019-02-11T00:00:00+00:00" }, { "id": "01a087dc-c4cf-73d2-9a67-3d3c59fa9b49", "title": "Ktor using OAuth 2.0 and IdentityServer4", "url": "https://www.scottbrady.io/kotlin/ktor-using-oauth-2-and-identityserver4", "published_at": "2019-02-01T00:00:00+00:00" }, { "id": "01a087dc-c4cf-73d2-9a67-3d3c5a961ddb", "title": "Why Developers Do Care About OAuth and OpenID Connect", "url": "https://www.scottbrady.io/oauth/why-developers-do-care-about-oauth-and-openid-connect", "published_at": "2019-01-27T00:00:00+00:00" }, { "id": "01a087dc-c4cf-73d2-9a67-3d3c5b6b6253", "title": "ASP.NET Core using Proof Key for Code Exchange (PKCE)", "url": "https://www.scottbrady.io/openid-connect/aspnet-core-using-proof-key-for-code-exchange-pkce", "published_at": "2019-01-22T00:00:00+00:00" }, { "id": "01a087dc-c4cf-73d2-9a67-3d3c5bdbd7d1", "title": "Cheat Sheet: OAuth for Browser-Based Applications (e.g. a JavaScript SPA)", "url": "https://www.scottbrady.io/oauth/cheat-sheet-oauth-for-browser-based-applications", "published_at": "2019-01-22T00:00:00+00:00" }, { "id": "01a087dc-c4cf-73d2-9a67-3d3c5c231ec2", "title": "JSON Web Encryption (JWE) in .NET", "url": "https://www.scottbrady.io/c-sharp/json-web-encryption-jwe-in-dotnet-core", "published_at": "2019-01-14T00:00:00+00:00" }, { "id": "01a087dc-c4cf-73d2-9a67-3d3c5cf702ee", "title": "Migrating oidc-client-js to use the OpenID Connect Authorization Code Flow and PKCE", "url": "https://www.scottbrady.io/angular/migrating-oidc-client-js-to-use-the-openid-connect-authorization-code-flow-and-pkce", "published_at": "2019-01-11T00:00:00+00:00" }, { "id": "01a087dc-c4cf-73d2-9a67-3d3c5dee0a91", "title": "Software Tokens Won't Save You", "url": "https://www.scottbrady.io/authentication/software-tokens-wont-save-you", "published_at": "2019-01-09T00:00:00+00:00" }, { "id": "01a087dc-c4cf-73d2-9a67-3d3c5e052e9b", "title": "Year in Review: 2018 Catch Up", "url": "https://www.scottbrady.io/general/year-in-review-2018-catch-up", "published_at": "2019-01-01T00:00:00+00:00" }, { "id": "01a087dc-c4cf-73d2-9a67-3d3c5e08938e", "title": "Creating Your Own IdentityServer4 Storage Library", "url": "https://www.scottbrady.io/identity-server/creating-your-own-identityserver4-storage-library", "published_at": "2018-12-11T00:00:00+00:00" }, { "id": "01a087dc-c4cf-73d2-9a67-3d3c5ee788bd", "title": "Removing Shared Secrets for OAuth Client Authentication", "url": "https://www.scottbrady.io/oauth/removing-shared-secrets-for-oauth-client-authentication", "published_at": "2018-10-02T00:00:00+00:00" }, { "id": "01a087dc-c4cf-73d2-9a67-3d3c5fb20c7c", "title": "Delegation Patterns for OAuth 2.0 using Token Exchange", "url": "https://www.scottbrady.io/oauth/delegation-patterns-for-oauth-20", "published_at": "2018-09-27T00:00:00+00:00" }, { "id": "01a087dc-c4cf-73d2-9a67-3d3c5fb39a45", "title": "Help! I’m Stuck in a Redirect Loop!", "url": "https://www.scottbrady.io/openid-connect/help-im-stuck-in-a-redirect-loop", "published_at": "2018-09-26T00:00:00+00:00" }, { "id": "01a087dc-c4cf-73d2-9a67-3d3c5fd2cfad", "title": "New Pluralsight Course: Getting Started with OAuth 2.0", "url": "https://www.scottbrady.io/oauth/new-pluralsight-course-getting-started-with-oauth-20", "published_at": "2018-09-16T00:00:00+00:00" }, { "id": "01a087dc-c4cf-73d2-9a67-3d3c60270f09", "title": "SPA Identity and Access Control with OpenID Connect and IdentityServer4", "url": "https://www.scottbrady.io/angular/spa-identity-and-access-control-with-openid-connect-and-identityserver4", "published_at": "2018-07-26T00:00:00+00:00" }, { "id": "01a087dc-c4cf-73d2-9a67-3d3c611a0a3b", "title": "Getting Started with IdentityManager2", "url": "https://www.scottbrady.io/aspnet-identity/getting-started-with-identitymanager2", "published_at": "2018-07-09T00:00:00+00:00" }, { "id": "01a087dc-c4cf-73d2-9a67-3d3c61de756b", "title": "A FIDO2 Primer and Proof of Concept using ASP.NET Core", "url": "https://www.scottbrady.io/fido/a-fido2-primer-and-proof-of-concept-using-aspnet-core", "published_at": "2018-07-05T00:00:00+00:00" }, { "id": "01a087dc-c4cf-73d2-9a67-3d3c6298c878", "title": "ASP.NET Core Swagger UI Authorization using IdentityServer4", "url": "https://www.scottbrady.io/identity-server/aspnet-core-swagger-ui-authorization-using-identityserver4", "published_at": "2018-06-13T00:00:00+00:00" }, { "id": "01a087dc-c4cf-73d2-9a67-3d3c636eff3f", "title": "Lessons Learned from Integrating with Blockchain Identity Providers", "url": "https://www.scottbrady.io/blockchain-identity/lessons-learned-from-integrating-with-blockchain-identity-providers", "published_at": "2018-06-12T00:00:00+00:00" }, { "id": "01a087dc-c4cf-73d2-9a67-3d3c642c0040", "title": "OAuth is Not Authentication", "url": "https://www.scottbrady.io/oauth/oauth-is-not-authentication", "published_at": "2018-04-24T00:00:00+00:00" }, { "id": "01a087dc-c4cf-73d2-9a67-3d3c64724f9d", "title": "An Introduction to the OAuth Device Flow", "url": "https://www.scottbrady.io/oauth/an-introduction-to-the-oauth-device-flow", "published_at": "2018-03-27T00:00:00+00:00" }, { "id": "01a087dc-c4cf-73d2-9a67-3d3c654173df", "title": "Implementing Medium's Passwordless Authentication using ASP.NET Core Identity", "url": "https://www.scottbrady.io/aspnet-identity/implementing-mediums-passwordless-authentication-using-aspnet-core-identity", "published_at": "2018-03-06T00:00:00+00:00" }, { "id": "01a087dc-c4cf-73d2-9a67-3d3c663c22a4", "title": "Technical Review of Civic's Secure Identity Platform", "url": "https://www.scottbrady.io/blockchain-identity/technical-review-of-civics-secure-identity-platform", "published_at": "2018-02-05T00:00:00+00:00" }, { "id": "01a087dc-c4cf-73d2-9a67-3d3c66b5abe2", "title": "Integrating with Civic SIP using ASP.NET Core", "url": "https://www.scottbrady.io/blockchain-identity/integrating-with-civic-sip-using-aspnet-core", "published_at": "2018-02-05T00:00:00+00:00" }, { "id": "01a087dc-c4cf-73d2-9a67-3d3c66d6b700", "title": "JWT Signing using ECDSA in .NET Core", "url": "https://www.scottbrady.io/c-sharp/jwt-signing-using-ecdsa-in-dotnet-core", "published_at": "2018-02-02T00:00:00+00:00" }, { "id": "01a087dc-c4cf-73d2-9a67-3d3c67967afc", "title": "JSON Web Token Verification in Ktor using Kotlin and Java-JWT", "url": "https://www.scottbrady.io/kotlin/json-web-token-verification-in-ktor-using-kotlin-and-java-jwt", "published_at": "2017-11-20T00:00:00+00:00" }, { "id": "01a087dc-c4cf-73d2-9a67-3d3c68165254", "title": "Experimenting with Kotlin and OAuth", "url": "https://www.scottbrady.io/kotlin/experimenting-with-kotlin-and-oauth", "published_at": "2017-11-15T00:00:00+00:00" }, { "id": "01a087dc-c4cf-73d2-9a67-3d3c687ee9d5", "title": "Silent Refresh - Refreshing Access Tokens when using the Implicit Flow", "url": "https://www.scottbrady.io/openid-connect/silent-refresh-refreshing-access-tokens-when-using-the-implicit-flow", "published_at": "2017-11-01T00:00:00+00:00" }, { "id": "01a087dc-c4cf-73d2-9a67-3d3c693f5f6a", "title": "Better Password Hashing in ASP.NET Core", "url": "https://www.scottbrady.io/aspnet-identity/improving-the-aspnet-core-identity-password-hasher", "published_at": "2017-10-30T00:00:00+00:00" }, { "id": "01a087dc-c4cf-73d2-9a67-3d3c6a29f52a", "title": "Don't use the OAuth password grant type", "url": "https://www.scottbrady.io/oauth/why-the-resource-owner-password-credentials-grant-type-is-not-authentication-nor-suitable-for-modern-applications", "published_at": "2017-08-29T00:00:00+00:00" }, { "id": "01a087dc-c4cf-73d2-9a67-3d3c6accb51d", "title": "SPA Authentication using OpenID Connect, Angular CLI and oidc-client", "url": "https://www.scottbrady.io/angular/spa-authentiction-using-openid-connect-angular-cli-and-oidc-client", "published_at": "2017-08-03T00:00:00+00:00" }, { "id": "01a087dc-c4cf-73d2-9a67-3d3c6b276259", "title": "Getting started with oidc-provider", "url": "https://www.scottbrady.io/openid-connect/getting-started-with-oidc-provider", "published_at": "2017-07-24T00:00:00+00:00" }, { "id": "01a087dc-c4cf-73d2-9a67-3d3c6bf8f2f2", "title": "The Wrong Ways to Protect an API", "url": "https://www.scottbrady.io/oauth/the-wrong-ways-to-protect-an-api", "published_at": "2017-07-06T00:00:00+00:00" }, { "id": "01a087dc-c4cf-73d2-9a67-3d3c6c7a792c", "title": "IdentityServer SharePoint Integration using WS-Federation", "url": "https://www.scottbrady.io/identity-server/identityserver-4-sharepoint-integration-using-ws-federation", "published_at": "2017-04-23T00:00:00+00:00" }, { "id": "01a087dc-c4cf-73d2-9a67-3d3c6cb40299", "title": "Cloudflare Origin Certificates and Azure App Services", "url": "https://www.scottbrady.io/azure/cloudflare-origin-certificates-and-azure-app-services", "published_at": "2017-04-18T00:00:00+00:00" } ] posts Claim your blog
Back to scottbrady.io
Blog · corpus.blog/blogs/scottbrady.io/posts

scottbrady.io

scottbrady.io

2026

2024

2023

2022

2021

2020

2019

2018

2017