<?xml version="1.0" encoding="utf-8"?>
<feed xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xml:lang="en-GB" xmlns="http://www.w3.org/2005/Atom">
  <title type="text">Joonas W&#39;s blog</title>
  <id>https://joonasw.net/rss</id>
  <rights type="text">Joonas Westlin 2026</rights>
  <updated>2025-11-30T11:56:28Z</updated>
  <author>
    <name>Joonas Westlin</name>
    <uri>https://joonasw.net</uri>
  </author>
  <link rel="self" type="application/atom+xml" href="https://joonasw.net/rss" />
  <link rel="alternate" type="text/html" href="https://joonasw.net" /><entry>
    <id>https://joonasw.net/view/durable-functions-deep-dive-part-4-executing-an-activity</id>
    <title type="text">Durable Functions Deep Dive part 4: Executing an activity</title>
    <published>2025-11-30T11:56:28Z</published>
    <updated>2025-11-30T11:56:28Z</updated>
    <author>
      <name>Joonas Westlin</name>
      <uri>https://joonasw.net</uri>
    </author>
    <link rel="alternate" type="text/html" href="https://joonasw.net/view/durable-functions-deep-dive-part-4-executing-an-activity" />
    <rights type="text">Joonas Westlin 2026</rights>
  </entry><entry>
    <id>https://joonasw.net/view/what-the-heck-is-azure-key-vault-managed-hsm</id>
    <title type="text">What the heck is Azure Key Vault Managed HSM</title>
    <published>2025-07-26T01:03:31Z</published>
    <updated>2025-07-26T01:03:31Z</updated>
    <author>
      <name>Joonas Westlin</name>
      <uri>https://joonasw.net</uri>
    </author>
    <link rel="alternate" type="text/html" href="https://joonasw.net/view/what-the-heck-is-azure-key-vault-managed-hsm" />
    <rights type="text">Joonas Westlin 2026</rights>
  </entry><entry>
    <id>https://joonasw.net/view/deploying-ef-core-migrations-in-release-pipelines</id>
    <title type="text">Deploying EF Core migrations in release pipelines</title>
    <published>2025-07-12T04:17:30Z</published>
    <updated>2025-07-12T04:17:30Z</updated>
    <author>
      <name>Joonas Westlin</name>
      <uri>https://joonasw.net</uri>
    </author>
    <link rel="alternate" type="text/html" href="https://joonasw.net/view/deploying-ef-core-migrations-in-release-pipelines" />
    <rights type="text">Joonas Westlin 2026</rights>
  </entry><entry>
    <id>https://joonasw.net/view/good-enough-security-for-an-azure-paas-application</id>
    <title type="text">Good enough security for an Azure PaaS application</title>
    <published>2025-03-26T16:07:52Z</published>
    <updated>2025-03-26T16:07:52Z</updated>
    <author>
      <name>Joonas Westlin</name>
      <uri>https://joonasw.net</uri>
    </author>
    <link rel="alternate" type="text/html" href="https://joonasw.net/view/good-enough-security-for-an-azure-paas-application" />
    <rights type="text">Joonas Westlin 2026</rights>
  </entry><entry>
    <id>https://joonasw.net/view/building-vehicle-location-tracking-app-in-azure-part-5-front-end</id>
    <title type="text">Building a vehicle location tracking app in Azure part 5: Front-end</title>
    <published>2024-03-20T07:37:19Z</published>
    <updated>2024-03-20T07:37:19Z</updated>
    <author>
      <name>Joonas Westlin</name>
      <uri>https://joonasw.net</uri>
    </author>
    <link rel="alternate" type="text/html" href="https://joonasw.net/view/building-vehicle-location-tracking-app-in-azure-part-5-front-end" />
    <rights type="text">Joonas Westlin 2026</rights>
  </entry><entry>
    <id>https://joonasw.net/view/building-vehicle-location-tracking-app-in-azure-part-4-signalr</id>
    <title type="text">Building a vehicle location tracking app in Azure part 4: SignalR</title>
    <published>2024-03-14T08:57:13Z</published>
    <updated>2024-03-14T08:57:13Z</updated>
    <author>
      <name>Joonas Westlin</name>
      <uri>https://joonasw.net</uri>
    </author>
    <link rel="alternate" type="text/html" href="https://joonasw.net/view/building-vehicle-location-tracking-app-in-azure-part-4-signalr" />
    <rights type="text">Joonas Westlin 2026</rights>
  </entry><entry>
    <id>https://joonasw.net/view/building-vehicle-location-tracking-app-in-azure-part-3-function-app</id>
    <title type="text">Building a vehicle location tracking app in Azure part 3: Function App</title>
    <published>2024-03-12T09:56:44Z</published>
    <updated>2024-03-12T09:56:44Z</updated>
    <author>
      <name>Joonas Westlin</name>
      <uri>https://joonasw.net</uri>
    </author>
    <link rel="alternate" type="text/html" href="https://joonasw.net/view/building-vehicle-location-tracking-app-in-azure-part-3-function-app" />
    <rights type="text">Joonas Westlin 2026</rights>
  </entry><entry>
    <id>https://joonasw.net/view/building-vehicle-location-tracking-app-in-azure-part-2-device-simulator</id>
    <title type="text">Building a vehicle location tracking app in Azure part 2: Device simulator</title>
    <published>2024-02-29T12:20:32Z</published>
    <updated>2024-02-29T12:20:32Z</updated>
    <author>
      <name>Joonas Westlin</name>
      <uri>https://joonasw.net</uri>
    </author>
    <link rel="alternate" type="text/html" href="https://joonasw.net/view/building-vehicle-location-tracking-app-in-azure-part-2-device-simulator" />
    <rights type="text">Joonas Westlin 2026</rights>
  </entry><entry>
    <id>https://joonasw.net/view/building-vehicle-location-tracking-app-in-azure-part-1-architecture</id>
    <title type="text">Building a vehicle location tracking app in Azure part 1: Architecture</title>
    <published>2024-02-22T16:19:54Z</published>
    <updated>2024-02-22T16:19:54Z</updated>
    <author>
      <name>Joonas Westlin</name>
      <uri>https://joonasw.net</uri>
    </author>
    <link rel="alternate" type="text/html" href="https://joonasw.net/view/building-vehicle-location-tracking-app-in-azure-part-1-architecture" />
    <rights type="text">Joonas Westlin 2026</rights>
  </entry><entry>
    <id>https://joonasw.net/view/using-azure-key-vault-for-signing-and-encrypting-json-web-tokens</id>
    <title type="text">Using Azure Key Vault for signing and encrypting JSON Web Tokens</title>
    <published>2024-02-20T14:50:52Z</published>
    <updated>2024-02-20T14:50:52Z</updated>
    <author>
      <name>Joonas Westlin</name>
      <uri>https://joonasw.net</uri>
    </author>
    <link rel="alternate" type="text/html" href="https://joonasw.net/view/using-azure-key-vault-for-signing-and-encrypting-json-web-tokens" />
    <rights type="text">Joonas Westlin 2026</rights>
  </entry><entry>
    <id>https://joonasw.net/view/durable-functions-deep-dive-part-3-running-an-activity</id>
    <title type="text">Durable Functions Deep Dive part 3: Running an activity</title>
    <published>2022-09-11T13:02:51Z</published>
    <updated>2022-09-11T13:02:51Z</updated>
    <author>
      <name>Joonas Westlin</name>
      <uri>https://joonasw.net</uri>
    </author>
    <link rel="alternate" type="text/html" href="https://joonasw.net/view/durable-functions-deep-dive-part-3-running-an-activity" />
    <rights type="text">Joonas Westlin 2026</rights>
  </entry><entry>
    <id>https://joonasw.net/view/durable-functions-deep-dive-part-2-starting-an-orchestration</id>
    <title type="text">Durable Functions Deep Dive part 2: Starting an orchestration</title>
    <published>2022-04-08T19:07:20Z</published>
    <updated>2022-04-08T19:07:20Z</updated>
    <author>
      <name>Joonas Westlin</name>
      <uri>https://joonasw.net</uri>
    </author>
    <link rel="alternate" type="text/html" href="https://joonasw.net/view/durable-functions-deep-dive-part-2-starting-an-orchestration" />
    <rights type="text">Joonas Westlin 2026</rights>
  </entry><entry>
    <id>https://joonasw.net/view/durable-functions-deep-dive-part-1-instance-startup</id>
    <title type="text">Durable Functions Deep Dive part 1: Instance startup</title>
    <published>2022-03-27T13:56:27Z</published>
    <updated>2022-03-27T13:56:27Z</updated>
    <author>
      <name>Joonas Westlin</name>
      <uri>https://joonasw.net</uri>
    </author>
    <link rel="alternate" type="text/html" href="https://joonasw.net/view/durable-functions-deep-dive-part-1-instance-startup" />
    <rights type="text">Joonas Westlin 2026</rights>
  </entry><entry>
    <id>https://joonasw.net/view/building-code-sandbox-with-durable-functions-and-container-instances</id>
    <title type="text">Building a code sandbox with Durable Functions and Container Instances</title>
    <published>2022-03-20T19:27:54Z</published>
    <updated>2022-03-20T19:27:54Z</updated>
    <author>
      <name>Joonas Westlin</name>
      <uri>https://joonasw.net</uri>
    </author>
    <link rel="alternate" type="text/html" href="https://joonasw.net/view/building-code-sandbox-with-durable-functions-and-container-instances" />
    <rights type="text">Joonas Westlin 2026</rights>
  </entry><entry>
    <id>https://joonasw.net/view/azure-ad-jwt-authentication-in-net-isolated-process-azure-functions</id>
    <title type="text">Azure AD JWT authentication in .NET isolated process Azure Functions</title>
    <published>2021-09-12T12:12:25Z</published>
    <updated>2021-09-12T12:12:25Z</updated>
    <author>
      <name>Joonas Westlin</name>
      <uri>https://joonasw.net</uri>
    </author>
    <link rel="alternate" type="text/html" href="https://joonasw.net/view/azure-ad-jwt-authentication-in-net-isolated-process-azure-functions" />
    <rights type="text">Joonas Westlin 2026</rights>
  </entry><entry>
    <id>https://joonasw.net/view/migrating-social-accounts-to-azure-ad-b2c</id>
    <title type="text">Migrating social accounts to Azure AD B2C</title>
    <published>2021-06-30T15:58:48Z</published>
    <updated>2021-06-30T15:58:48Z</updated>
    <author>
      <name>Joonas Westlin</name>
      <uri>https://joonasw.net</uri>
    </author>
    <link rel="alternate" type="text/html" href="https://joonasw.net/view/migrating-social-accounts-to-azure-ad-b2c" />
    <rights type="text">Joonas Westlin 2026</rights>
  </entry><entry>
    <id>https://joonasw.net/view/arrays-in-aspnet-mvc-core-route-parameters</id>
    <title type="text">Arrays in ASP.NET MVC Core route parameters</title>
    <published>2021-04-30T14:22:19Z</published>
    <updated>2021-04-30T14:22:19Z</updated>
    <author>
      <name>Joonas Westlin</name>
      <uri>https://joonasw.net</uri>
    </author>
    <link rel="alternate" type="text/html" href="https://joonasw.net/view/arrays-in-aspnet-mvc-core-route-parameters" />
    <rights type="text">Joonas Westlin 2026</rights>
  </entry><entry>
    <id>https://joonasw.net/view/access-data-in-cosmos-db-with-managed-identities</id>
    <title type="text">Access data in Cosmos DB with Managed Identities</title>
    <published>2021-04-15T05:42:20Z</published>
    <updated>2021-04-15T05:42:20Z</updated>
    <author>
      <name>Joonas Westlin</name>
      <uri>https://joonasw.net</uri>
    </author>
    <link rel="alternate" type="text/html" href="https://joonasw.net/view/access-data-in-cosmos-db-with-managed-identities" />
    <rights type="text">Joonas Westlin 2026</rights>
  </entry><entry>
    <id>https://joonasw.net/view/track-activity-and-sub-orchestrator-progress-in-azure-durable-functions-orchestrators</id>
    <title type="text">Track activity and sub-orchestrator progress in Azure Durable Functions orchestrators</title>
    <published>2021-04-03T09:44:59Z</published>
    <updated>2021-04-03T09:44:59Z</updated>
    <author>
      <name>Joonas Westlin</name>
      <uri>https://joonasw.net</uri>
    </author>
    <link rel="alternate" type="text/html" href="https://joonasw.net/view/track-activity-and-sub-orchestrator-progress-in-azure-durable-functions-orchestrators" />
    <rights type="text">Joonas Westlin 2026</rights>
  </entry><entry>
    <id>https://joonasw.net/view/building-azure-ad-b2c-custom-policies-part-2-azure-devops-automated-build-and-deployment</id>
    <title type="text">Building Azure AD B2C custom policies part 2: Azure DevOps automated build and deployment</title>
    <published>2021-03-06T08:52:12Z</published>
    <updated>2021-03-06T08:52:12Z</updated>
    <author>
      <name>Joonas Westlin</name>
      <uri>https://joonasw.net</uri>
    </author>
    <link rel="alternate" type="text/html" href="https://joonasw.net/view/building-azure-ad-b2c-custom-policies-part-2-azure-devops-automated-build-and-deployment" />
    <rights type="text">Joonas Westlin 2026</rights>
  </entry><entry>
    <id>https://joonasw.net/view/building-azure-ad-b2c-custom-policies-part-1-vs-code-and-manual-deployment</id>
    <title type="text">Building Azure AD B2C custom policies part 1: Visual Studio Code and manual deployment</title>
    <published>2021-01-23T13:54:36Z</published>
    <updated>2021-01-23T13:54:36Z</updated>
    <author>
      <name>Joonas Westlin</name>
      <uri>https://joonasw.net</uri>
    </author>
    <link rel="alternate" type="text/html" href="https://joonasw.net/view/building-azure-ad-b2c-custom-policies-part-1-vs-code-and-manual-deployment" />
    <rights type="text">Joonas Westlin 2026</rights>
  </entry><entry>
    <id>https://joonasw.net/view/get-managed-identity-access-token-in-azure-app-service-through-kudu</id>
    <title type="text">Get a Managed Identity access token in Azure App Service through Advanced Tools (Kudu)</title>
    <published>2021-01-22T14:49:34Z</published>
    <updated>2021-01-22T14:49:34Z</updated>
    <author>
      <name>Joonas Westlin</name>
      <uri>https://joonasw.net</uri>
    </author>
    <link rel="alternate" type="text/html" href="https://joonasw.net/view/get-managed-identity-access-token-in-azure-app-service-through-kudu" />
    <rights type="text">Joonas Westlin 2026</rights>
  </entry><entry>
    <id>https://joonasw.net/view/moving-net-core-user-secrets-to-another-computer</id>
    <title type="text">Moving .NET Core user secrets to another computer</title>
    <published>2021-01-13T17:33:08Z</published>
    <updated>2021-01-13T17:33:08Z</updated>
    <author>
      <name>Joonas Westlin</name>
      <uri>https://joonasw.net</uri>
    </author>
    <link rel="alternate" type="text/html" href="https://joonasw.net/view/moving-net-core-user-secrets-to-another-computer" />
    <rights type="text">Joonas Westlin 2026</rights>
  </entry><entry>
    <id>https://joonasw.net/view/cleaning-up-azure-durable-functions-execution-history</id>
    <title type="text">Cleaning up Azure Durable Functions execution history</title>
    <published>2020-10-27T18:19:44Z</published>
    <updated>2020-10-27T18:19:44Z</updated>
    <author>
      <name>Joonas Westlin</name>
      <uri>https://joonasw.net</uri>
    </author>
    <link rel="alternate" type="text/html" href="https://joonasw.net/view/cleaning-up-azure-durable-functions-execution-history" />
    <rights type="text">Joonas Westlin 2026</rights>
  </entry><entry>
    <id>https://joonasw.net/view/using-azure-rbac-with-azure-key-vault</id>
    <title type="text">Using Azure RBAC with Azure Key Vault</title>
    <published>2020-09-24T11:20:12Z</published>
    <updated>2020-09-24T11:20:12Z</updated>
    <author>
      <name>Joonas Westlin</name>
      <uri>https://joonasw.net</uri>
    </author>
    <link rel="alternate" type="text/html" href="https://joonasw.net/view/using-azure-rbac-with-azure-key-vault" />
    <rights type="text">Joonas Westlin 2026</rights>
  </entry><entry>
    <id>https://joonasw.net/view/azure-ad-v2-and-msal-in-2020</id>
    <title type="text">Azure AD v2 and MSAL in 2020</title>
    <published>2020-08-31T11:37:37Z</published>
    <updated>2020-08-31T11:37:37Z</updated>
    <author>
      <name>Joonas Westlin</name>
      <uri>https://joonasw.net</uri>
    </author>
    <link rel="alternate" type="text/html" href="https://joonasw.net/view/azure-ad-v2-and-msal-in-2020" />
    <rights type="text">Joonas Westlin 2026</rights>
  </entry><entry>
    <id>https://joonasw.net/view/how-azure-durable-functions-scale</id>
    <title type="text">How Azure Durable Functions scale</title>
    <published>2020-06-04T05:33:53Z</published>
    <updated>2020-06-04T05:33:53Z</updated>
    <author>
      <name>Joonas Westlin</name>
      <uri>https://joonasw.net</uri>
    </author>
    <link rel="alternate" type="text/html" href="https://joonasw.net/view/how-azure-durable-functions-scale" />
    <rights type="text">Joonas Westlin 2026</rights>
  </entry><entry>
    <id>https://joonasw.net/view/hide-actions-from-swagger-openapi-documentation-in-aspnet-core</id>
    <title type="text">Hide actions from Swagger / OpenAPI documentation in ASP.NET Core</title>
    <published>2020-03-16T10:41:48Z</published>
    <updated>2020-03-16T10:41:48Z</updated>
    <author>
      <name>Joonas Westlin</name>
      <uri>https://joonasw.net</uri>
    </author>
    <link rel="alternate" type="text/html" href="https://joonasw.net/view/hide-actions-from-swagger-openapi-documentation-in-aspnet-core" />
    <rights type="text">Joonas Westlin 2026</rights>
  </entry><entry>
    <id>https://joonasw.net/view/aspnet-core-data-protection-with-azure-key-vault-and-azure-storage</id>
    <title type="text">ASP.NET Core Data Protection with Azure Key Vault and Azure Storage</title>
    <published>2020-03-14T12:23:28Z</published>
    <updated>2020-03-14T12:23:28Z</updated>
    <author>
      <name>Joonas Westlin</name>
      <uri>https://joonasw.net</uri>
    </author>
    <link rel="alternate" type="text/html" href="https://joonasw.net/view/aspnet-core-data-protection-with-azure-key-vault-and-azure-storage" />
    <rights type="text">Joonas Westlin 2026</rights>
  </entry><entry>
    <id>https://joonasw.net/view/azure-cosmos-db-free-tier</id>
    <title type="text">Azure Cosmos DB Free Tier</title>
    <published>2020-03-07T10:02:28Z</published>
    <updated>2020-03-07T10:02:28Z</updated>
    <author>
      <name>Joonas Westlin</name>
      <uri>https://joonasw.net</uri>
    </author>
    <link rel="alternate" type="text/html" href="https://joonasw.net/view/azure-cosmos-db-free-tier" />
    <rights type="text">Joonas Westlin 2026</rights>
  </entry><entry>
    <id>https://joonasw.net/view/testing-azure-ad-protected-apis-part-5-pipelines-in-azure-devops</id>
    <title type="text">Testing Azure AD-protected APIs, part 5: Pipelines in Azure DevOps</title>
    <published>2020-01-25T10:15:48Z</published>
    <updated>2020-01-25T10:15:48Z</updated>
    <author>
      <name>Joonas Westlin</name>
      <uri>https://joonasw.net</uri>
    </author>
    <link rel="alternate" type="text/html" href="https://joonasw.net/view/testing-azure-ad-protected-apis-part-5-pipelines-in-azure-devops" />
    <rights type="text">Joonas Westlin 2026</rights>
  </entry><entry>
    <id>https://joonasw.net/view/testing-azure-ad-protected-apis-part-4-github-actions-ci-workflow</id>
    <title type="text">Testing Azure AD-protected APIs, part 4: GitHub Actions CI workflow</title>
    <published>2020-01-05T12:14:30Z</published>
    <updated>2020-01-05T12:14:30Z</updated>
    <author>
      <name>Joonas Westlin</name>
      <uri>https://joonasw.net</uri>
    </author>
    <link rel="alternate" type="text/html" href="https://joonasw.net/view/testing-azure-ad-protected-apis-part-4-github-actions-ci-workflow" />
    <rights type="text">Joonas Westlin 2026</rights>
  </entry><entry>
    <id>https://joonasw.net/view/testing-azure-ad-protected-apis-part-3-automated-integration-tests</id>
    <title type="text">Testing Azure AD-protected APIs, part 3: Automated integration tests</title>
    <published>2019-12-29T14:41:01Z</published>
    <updated>2019-12-29T14:41:01Z</updated>
    <author>
      <name>Joonas Westlin</name>
      <uri>https://joonasw.net</uri>
    </author>
    <link rel="alternate" type="text/html" href="https://joonasw.net/view/testing-azure-ad-protected-apis-part-3-automated-integration-tests" />
    <rights type="text">Joonas Westlin 2026</rights>
  </entry><entry>
    <id>https://joonasw.net/view/testing-azure-ad-protected-apis-part-2-postman</id>
    <title type="text">Testing Azure AD-protected APIs, part 2: Postman</title>
    <published>2019-11-20T18:23:26Z</published>
    <updated>2019-11-20T18:23:26Z</updated>
    <author>
      <name>Joonas Westlin</name>
      <uri>https://joonasw.net</uri>
    </author>
    <link rel="alternate" type="text/html" href="https://joonasw.net/view/testing-azure-ad-protected-apis-part-2-postman" />
    <rights type="text">Joonas Westlin 2026</rights>
  </entry><entry>
    <id>https://joonasw.net/view/testing-azure-ad-protected-apis-part-1-swagger-ui</id>
    <title type="text">Testing Azure AD-protected APIs, part 1: Swagger UI</title>
    <published>2019-11-11T09:46:16Z</published>
    <updated>2019-11-11T09:46:16Z</updated>
    <author>
      <name>Joonas Westlin</name>
      <uri>https://joonasw.net</uri>
    </author>
    <link rel="alternate" type="text/html" href="https://joonasw.net/view/testing-azure-ad-protected-apis-part-1-swagger-ui" />
    <rights type="text">Joonas Westlin 2026</rights>
  </entry><entry>
    <id>https://joonasw.net/view/setting-up-free-https-certificate-in-azure-app-service</id>
    <title type="text">Setting up a free HTTPS certificate in Azure App Service</title>
    <published>2019-11-05T18:16:04Z</published>
    <updated>2019-11-05T18:16:04Z</updated>
    <author>
      <name>Joonas Westlin</name>
      <uri>https://joonasw.net</uri>
    </author>
    <link rel="alternate" type="text/html" href="https://joonasw.net/view/setting-up-free-https-certificate-in-azure-app-service" />
    <rights type="text">Joonas Westlin 2026</rights>
  </entry><entry>
    <id>https://joonasw.net/view/speaking-at-techorama-nl-2019-about-managed-identities</id>
    <title type="text">Speaking at Techorama NL 2019 about Managed Identities</title>
    <published>2019-09-21T13:27:10Z</published>
    <updated>2019-09-21T13:27:10Z</updated>
    <author>
      <name>Joonas Westlin</name>
      <uri>https://joonasw.net</uri>
    </author>
    <link rel="alternate" type="text/html" href="https://joonasw.net/view/speaking-at-techorama-nl-2019-about-managed-identities" />
    <rights type="text">Joonas Westlin 2026</rights>
  </entry><entry>
    <id>https://joonasw.net/view/cross-tenant-token-attacks-now-harder-in-azure-ad</id>
    <title type="text">Cross-tenant token attacks are now harder in Azure AD</title>
    <published>2019-08-24T18:05:56Z</published>
    <updated>2019-08-24T18:05:56Z</updated>
    <author>
      <name>Joonas Westlin</name>
      <uri>https://joonasw.net</uri>
    </author>
    <link rel="alternate" type="text/html" href="https://joonasw.net/view/cross-tenant-token-attacks-now-harder-in-azure-ad" />
    <rights type="text">Joonas Westlin 2026</rights>
  </entry><entry>
    <id>https://joonasw.net/view/always-check-token-permissions-in-aad-protected-api</id>
    <title type="text">Always check permissions in tokens in an Azure AD protected API</title>
    <published>2019-08-05T15:20:33Z</published>
    <updated>2019-08-05T15:20:33Z</updated>
    <author>
      <name>Joonas Westlin</name>
      <uri>https://joonasw.net</uri>
    </author>
    <link rel="alternate" type="text/html" href="https://joonasw.net/view/always-check-token-permissions-in-aad-protected-api" />
    <rights type="text">Joonas Westlin 2026</rights>
  </entry><entry>
    <id>https://joonasw.net/view/why-you-should-not-put-secrets-in-native-applications</id>
    <title type="text">Why you should not put secrets in native applications</title>
    <published>2019-05-29T18:59:27Z</published>
    <updated>2019-05-29T18:59:27Z</updated>
    <author>
      <name>Joonas Westlin</name>
      <uri>https://joonasw.net</uri>
    </author>
    <link rel="alternate" type="text/html" href="https://joonasw.net/view/why-you-should-not-put-secrets-in-native-applications" />
    <rights type="text">Joonas Westlin 2026</rights>
  </entry><entry>
    <id>https://joonasw.net/view/keeping-secrets-out-of-version-control-in-net-applications</id>
    <title type="text">Keeping secrets out of version control in .NET applications</title>
    <published>2019-05-26T09:48:19Z</published>
    <updated>2019-05-26T09:48:19Z</updated>
    <author>
      <name>Joonas Westlin</name>
      <uri>https://joonasw.net</uri>
    </author>
    <link rel="alternate" type="text/html" href="https://joonasw.net/view/keeping-secrets-out-of-version-control-in-net-applications" />
    <rights type="text">Joonas Westlin 2026</rights>
  </entry><entry>
    <id>https://joonasw.net/view/best-practices-for-n-tenant-azure-ad-applications</id>
    <title type="text">Best practices for N-tenant Azure AD applications</title>
    <published>2019-05-21T19:29:09Z</published>
    <updated>2019-05-21T19:29:09Z</updated>
    <author>
      <name>Joonas Westlin</name>
      <uri>https://joonasw.net</uri>
    </author>
    <link rel="alternate" type="text/html" href="https://joonasw.net/view/best-practices-for-n-tenant-azure-ad-applications" />
    <rights type="text">Joonas Westlin 2026</rights>
  </entry><entry>
    <id>https://joonasw.net/view/ropc-grant-flow-in-azure-ad</id>
    <title type="text">Resource Owner Password Credentials grant flow in Azure AD</title>
    <published>2019-05-05T22:49:47Z</published>
    <updated>2019-05-05T22:49:47Z</updated>
    <author>
      <name>Joonas Westlin</name>
      <uri>https://joonasw.net</uri>
    </author>
    <link rel="alternate" type="text/html" href="https://joonasw.net/view/ropc-grant-flow-in-azure-ad" />
    <rights type="text">Joonas Westlin 2026</rights>
  </entry><entry>
    <id>https://joonasw.net/view/avoiding-wildcard-reply-urls-with-msal-js</id>
    <title type="text">Avoiding wildcard reply URLs with MSAL.js</title>
    <published>2019-05-02T14:01:09Z</published>
    <updated>2019-05-02T14:01:09Z</updated>
    <author>
      <name>Joonas Westlin</name>
      <uri>https://joonasw.net</uri>
    </author>
    <link rel="alternate" type="text/html" href="https://joonasw.net/view/avoiding-wildcard-reply-urls-with-msal-js" />
    <rights type="text">Joonas Westlin 2026</rights>
  </entry><entry>
    <id>https://joonasw.net/view/using-groups-vs-using-app-roles-in-azure-ad-apps</id>
    <title type="text">Using groups vs using application roles for authorization in Azure AD apps</title>
    <published>2019-04-21T18:26:16Z</published>
    <updated>2019-04-21T18:26:16Z</updated>
    <author>
      <name>Joonas Westlin</name>
      <uri>https://joonasw.net</uri>
    </author>
    <link rel="alternate" type="text/html" href="https://joonasw.net/view/using-groups-vs-using-app-roles-in-azure-ad-apps" />
    <rights type="text">Joonas Westlin 2026</rights>
  </entry><entry>
    <id>https://joonasw.net/view/using-azure-key-vault-and-azure-storage-for-asp-net-core-data-protection-keys</id>
    <title type="text">Using Azure Key Vault and Azure Storage to store Data Protection keys with ASP.NET Core</title>
    <published>2019-04-07T13:13:48Z</published>
    <updated>2019-04-07T13:13:48Z</updated>
    <author>
      <name>Joonas Westlin</name>
      <uri>https://joonasw.net</uri>
    </author>
    <link rel="alternate" type="text/html" href="https://joonasw.net/view/using-azure-key-vault-and-azure-storage-for-asp-net-core-data-protection-keys" />
    <rights type="text">Joonas Westlin 2026</rights>
  </entry><entry>
    <id>https://joonasw.net/view/exploring-cosmos-db-sdk-v3</id>
    <title type="text">Exploring the new .NET Cosmos DB SDK (v3)</title>
    <published>2019-01-25T18:33:19Z</published>
    <updated>2019-01-25T18:33:19Z</updated>
    <author>
      <name>Joonas Westlin</name>
      <uri>https://joonasw.net</uri>
    </author>
    <link rel="alternate" type="text/html" href="https://joonasw.net/view/exploring-cosmos-db-sdk-v3" />
    <rights type="text">Joonas Westlin 2026</rights>
  </entry><entry>
    <id>https://joonasw.net/view/aad-single-sign-out-in-asp-net-core</id>
    <title type="text">Implementing Azure AD Single Sign-Out in ASP.NET Core</title>
    <published>2018-11-23T17:37:09Z</published>
    <updated>2018-11-23T17:37:09Z</updated>
    <author>
      <name>Joonas Westlin</name>
      <uri>https://joonasw.net</uri>
    </author>
    <link rel="alternate" type="text/html" href="https://joonasw.net/view/aad-single-sign-out-in-asp-net-core" />
    <rights type="text">Joonas Westlin 2026</rights>
  </entry><entry>
    <id>https://joonasw.net/view/azure-service-bus-managed-identities</id>
    <title type="text">Accessing Azure Service Bus with Managed Identities</title>
    <published>2018-11-03T10:18:23Z</published>
    <updated>2018-11-03T10:18:23Z</updated>
    <author>
      <name>Joonas Westlin</name>
      <uri>https://joonasw.net</uri>
    </author>
    <link rel="alternate" type="text/html" href="https://joonasw.net/view/azure-service-bus-managed-identities" />
    <rights type="text">Joonas Westlin 2026</rights>
  </entry><entry>
    <id>https://joonasw.net/view/azure-ad-authentication-aspnet-core-api-part-2</id>
    <title type="text">Azure AD Authentication in ASP.NET Core APIs part 2: Custom permissions, multi-tenant APIs</title>
    <published>2018-08-02T16:44:51Z</published>
    <updated>2018-08-02T16:44:51Z</updated>
    <author>
      <name>Joonas Westlin</name>
      <uri>https://joonasw.net</uri>
    </author>
    <link rel="alternate" type="text/html" href="https://joonasw.net/view/azure-ad-authentication-aspnet-core-api-part-2" />
    <rights type="text">Joonas Westlin 2026</rights>
  </entry><entry>
    <id>https://joonasw.net/view/azure-ad-msi-july-2018-updates</id>
    <title type="text">Azure AD Managed Service Identity July 2018 Updates</title>
    <published>2018-07-31T12:16:28Z</published>
    <updated>2018-07-31T12:16:28Z</updated>
    <author>
      <name>Joonas Westlin</name>
      <uri>https://joonasw.net</uri>
    </author>
    <link rel="alternate" type="text/html" href="https://joonasw.net/view/azure-ad-msi-july-2018-updates" />
    <rights type="text">Joonas Westlin 2026</rights>
  </entry><entry>
    <id>https://joonasw.net/view/azure-ad-authentication-aspnet-core-api-part-1</id>
    <title type="text">Azure AD Authentication in ASP.NET Core APIs part 1: Basic setup, checking scopes, creating a test client</title>
    <published>2018-06-12T19:13:22Z</published>
    <updated>2018-06-12T19:13:22Z</updated>
    <author>
      <name>Joonas Westlin</name>
      <uri>https://joonasw.net</uri>
    </author>
    <link rel="alternate" type="text/html" href="https://joonasw.net/view/azure-ad-authentication-aspnet-core-api-part-1" />
    <rights type="text">Joonas Westlin 2026</rights>
  </entry><entry>
    <id>https://joonasw.net/view/azure-ad-authentication-with-azure-storage-and-managed-service-identity</id>
    <title type="text">Azure AD Authentication with Azure Storage + Managed Service Identity</title>
    <published>2018-05-24T20:01:21Z</published>
    <updated>2018-05-24T20:01:21Z</updated>
    <author>
      <name>Joonas Westlin</name>
      <uri>https://joonasw.net</uri>
    </author>
    <link rel="alternate" type="text/html" href="https://joonasw.net/view/azure-ad-authentication-with-azure-storage-and-managed-service-identity" />
    <rights type="text">Joonas Westlin 2026</rights>
  </entry><entry>
    <id>https://joonasw.net/view/calling-your-apis-with-aad-msi-using-app-permissions</id>
    <title type="text">Calling your APIs with Azure AD Managed Service Identity using application permissions</title>
    <published>2018-04-24T19:07:10Z</published>
    <updated>2018-04-24T19:07:10Z</updated>
    <author>
      <name>Joonas Westlin</name>
      <uri>https://joonasw.net</uri>
    </author>
    <link rel="alternate" type="text/html" href="https://joonasw.net/view/calling-your-apis-with-aad-msi-using-app-permissions" />
    <rights type="text">Joonas Westlin 2026</rights>
  </entry><entry>
    <id>https://joonasw.net/view/adding-opt-in-feature-to-azure-ad-app</id>
    <title type="text">Adding an opt-in feature to an Azure AD v1 app in a good way</title>
    <published>2018-04-18T08:39:55Z</published>
    <updated>2018-04-18T08:39:55Z</updated>
    <author>
      <name>Joonas Westlin</name>
      <uri>https://joonasw.net</uri>
    </author>
    <link rel="alternate" type="text/html" href="https://joonasw.net/view/adding-opt-in-feature-to-azure-ad-app" />
    <rights type="text">Joonas Westlin 2026</rights>
  </entry><entry>
    <id>https://joonasw.net/view/azure-ad-v2-and-msal-from-dev-pov</id>
    <title type="text">Azure AD v2 and MSAL from a developer&#39;s point of view</title>
    <published>2018-04-10T10:11:20Z</published>
    <updated>2018-04-10T10:11:20Z</updated>
    <author>
      <name>Joonas Westlin</name>
      <uri>https://joonasw.net</uri>
    </author>
    <link rel="alternate" type="text/html" href="https://joonasw.net/view/azure-ad-v2-and-msal-from-dev-pov" />
    <rights type="text">Joonas Westlin 2026</rights>
  </entry><entry>
    <id>https://joonasw.net/view/csharp-await-and-js-promises-in-blazor</id>
    <title type="text">Using C# await against JS Promises in Blazor</title>
    <published>2018-04-07T12:55:16Z</published>
    <updated>2018-04-07T12:55:16Z</updated>
    <author>
      <name>Joonas Westlin</name>
      <uri>https://joonasw.net</uri>
    </author>
    <link rel="alternate" type="text/html" href="https://joonasw.net/view/csharp-await-and-js-promises-in-blazor" />
    <rights type="text">Joonas Westlin 2026</rights>
  </entry><entry>
    <id>https://joonasw.net/view/aspnet-core-data-annotation-localization-shared-resx-file</id>
    <title type="text">Shared RESX file for data annotation localization in ASP.NET Core 2.0</title>
    <published>2018-03-20T18:40:07Z</published>
    <updated>2018-03-20T18:40:07Z</updated>
    <author>
      <name>Joonas Westlin</name>
      <uri>https://joonasw.net</uri>
    </author>
    <link rel="alternate" type="text/html" href="https://joonasw.net/view/aspnet-core-data-annotation-localization-shared-resx-file" />
    <rights type="text">Joonas Westlin 2026</rights>
  </entry><entry>
    <id>https://joonasw.net/view/aad-api-chains-and-cyclic-dependencies</id>
    <title type="text">Azure AD Multi-tenant Apps: API Chains and Cyclic Dependencies</title>
    <published>2018-03-17T22:07:22Z</published>
    <updated>2018-03-17T22:07:22Z</updated>
    <author>
      <name>Joonas Westlin</name>
      <uri>https://joonasw.net</uri>
    </author>
    <link rel="alternate" type="text/html" href="https://joonasw.net/view/aad-api-chains-and-cyclic-dependencies" />
    <rights type="text">Joonas Westlin 2026</rights>
  </entry><entry>
    <id>https://joonasw.net/view/aspnet-core-azure-keyvault-msi</id>
    <title type="text">ASP.NET Core + Azure Key Vault + Azure AD MSI = Awesome way to do config</title>
    <published>2018-03-06T18:34:07Z</published>
    <updated>2018-03-06T18:34:07Z</updated>
    <author>
      <name>Joonas Westlin</name>
      <uri>https://joonasw.net</uri>
    </author>
    <link rel="alternate" type="text/html" href="https://joonasw.net/view/aspnet-core-azure-keyvault-msi" />
    <rights type="text">Joonas Westlin 2026</rights>
  </entry><entry>
    <id>https://joonasw.net/view/device-code-flow</id>
    <title type="text">How Device Code Flow works in Azure AD</title>
    <published>2018-02-27T20:50:54Z</published>
    <updated>2018-02-27T20:50:54Z</updated>
    <author>
      <name>Joonas Westlin</name>
      <uri>https://joonasw.net</uri>
    </author>
    <link rel="alternate" type="text/html" href="https://joonasw.net/view/device-code-flow" />
    <rights type="text">Joonas Westlin 2026</rights>
  </entry><entry>
    <id>https://joonasw.net/view/how-to-detect-ai-ping-tests</id>
    <title type="text">How to detect a request is an Application Insights ping test</title>
    <published>2018-02-24T17:52:33Z</published>
    <updated>2018-02-24T17:52:33Z</updated>
    <author>
      <name>Joonas Westlin</name>
      <uri>https://joonasw.net</uri>
    </author>
    <link rel="alternate" type="text/html" href="https://joonasw.net/view/how-to-detect-ai-ping-tests" />
    <rights type="text">Joonas Westlin 2026</rights>
  </entry><entry>
    <id>https://joonasw.net/view/aspnet-core-2-1-actionresult-of-t</id>
    <title type="text">Exploring ActionResult&lt;T&gt; in ASP.NET Core 2.1</title>
    <published>2018-02-18T10:41:25Z</published>
    <updated>2018-02-18T10:41:25Z</updated>
    <author>
      <name>Joonas Westlin</name>
      <uri>https://joonasw.net</uri>
    </author>
    <link rel="alternate" type="text/html" href="https://joonasw.net/view/aspnet-core-2-1-actionresult-of-t" />
    <rights type="text">Joonas Westlin 2026</rights>
  </entry><entry>
    <id>https://joonasw.net/view/creating-auth-scheme-in-aspnet-core-2</id>
    <title type="text">Creating an authentication scheme in ASP.NET Core 2.0</title>
    <published>2018-02-02T22:23:56Z</published>
    <updated>2018-02-02T22:23:56Z</updated>
    <author>
      <name>Joonas Westlin</name>
      <uri>https://joonasw.net</uri>
    </author>
    <link rel="alternate" type="text/html" href="https://joonasw.net/view/creating-auth-scheme-in-aspnet-core-2" />
    <rights type="text">Joonas Westlin 2026</rights>
  </entry><entry>
    <id>https://joonasw.net/view/azure-ad-on-behalf-of-aspnet-core</id>
    <title type="text">Using Azure AD On-Behalf-Of flow in an ASP.NET Core 2.0 API</title>
    <published>2018-01-06T19:34:41Z</published>
    <updated>2018-01-06T19:34:41Z</updated>
    <author>
      <name>Joonas Westlin</name>
      <uri>https://joonasw.net</uri>
    </author>
    <link rel="alternate" type="text/html" href="https://joonasw.net/view/azure-ad-on-behalf-of-aspnet-core" />
    <rights type="text">Joonas Westlin 2026</rights>
  </entry><entry>
    <id>https://joonasw.net/view/redis-cache-session-store</id>
    <title type="text">Using Redis Cache for session data storage in ASP.NET Core</title>
    <published>2017-12-11T18:17:40Z</published>
    <updated>2017-12-11T18:17:40Z</updated>
    <author>
      <name>Joonas Westlin</name>
      <uri>https://joonasw.net</uri>
    </author>
    <link rel="alternate" type="text/html" href="https://joonasw.net/view/redis-cache-session-store" />
    <rights type="text">Joonas Westlin 2026</rights>
  </entry><entry>
    <id>https://joonasw.net/view/the-grant-requires-admin-permission</id>
    <title type="text">AADSTS90094: The grant requires admin permission, how to fix it and why it happens</title>
    <published>2017-12-09T19:36:59Z</published>
    <updated>2017-12-09T19:36:59Z</updated>
    <author>
      <name>Joonas Westlin</name>
      <uri>https://joonasw.net</uri>
    </author>
    <link rel="alternate" type="text/html" href="https://joonasw.net/view/the-grant-requires-admin-permission" />
    <rights type="text">Joonas Westlin 2026</rights>
  </entry><entry>
    <id>https://joonasw.net/view/adding-custom-claims-aspnet-core-2</id>
    <title type="text">Adding custom claims to a user during authentication with ASP.NET Core 2.0</title>
    <published>2017-12-05T18:51:35Z</published>
    <updated>2017-12-05T18:51:35Z</updated>
    <author>
      <name>Joonas Westlin</name>
      <uri>https://joonasw.net</uri>
    </author>
    <link rel="alternate" type="text/html" href="https://joonasw.net/view/adding-custom-claims-aspnet-core-2" />
    <rights type="text">Joonas Westlin 2026</rights>
  </entry><entry>
    <id>https://joonasw.net/view/defining-permissions-and-roles-in-aad</id>
    <title type="text">Defining permission scopes and roles offered by an app in Azure AD</title>
    <published>2017-12-03T20:44:06Z</published>
    <updated>2017-12-03T20:44:06Z</updated>
    <author>
      <name>Joonas Westlin</name>
      <uri>https://joonasw.net</uri>
    </author>
    <link rel="alternate" type="text/html" href="https://joonasw.net/view/defining-permissions-and-roles-in-aad" />
    <rights type="text">Joonas Westlin 2026</rights>
  </entry><entry>
    <id>https://joonasw.net/view/apply-authz-by-default</id>
    <title type="text">Apply Authorization by default in ASP.NET Core</title>
    <published>2017-11-29T17:54:59Z</published>
    <updated>2017-11-29T17:54:59Z</updated>
    <author>
      <name>Joonas Westlin</name>
      <uri>https://joonasw.net</uri>
    </author>
    <link rel="alternate" type="text/html" href="https://joonasw.net/view/apply-authz-by-default" />
    <rights type="text">Joonas Westlin 2026</rights>
  </entry><entry>
    <id>https://joonasw.net/view/custom-error-pages</id>
    <title type="text">Custom error pages in ASP.NET MVC Core</title>
    <published>2017-11-04T10:02:44Z</published>
    <updated>2017-11-04T10:02:44Z</updated>
    <author>
      <name>Joonas Westlin</name>
      <uri>https://joonasw.net</uri>
    </author>
    <link rel="alternate" type="text/html" href="https://joonasw.net/view/custom-error-pages" />
    <rights type="text">Joonas Westlin 2026</rights>
  </entry><entry>
    <id>https://joonasw.net/view/discovering-actions-and-razor-pages</id>
    <title type="text">Discovering controller actions and Razor Pages in ASP.NET MVC Core</title>
    <published>2017-11-03T18:21:45Z</published>
    <updated>2017-11-03T18:21:45Z</updated>
    <author>
      <name>Joonas Westlin</name>
      <uri>https://joonasw.net</uri>
    </author>
    <link rel="alternate" type="text/html" href="https://joonasw.net/view/discovering-actions-and-razor-pages" />
    <rights type="text">Joonas Westlin 2026</rights>
  </entry><entry>
    <id>https://joonasw.net/view/azure-ad-managed-service-identity</id>
    <title type="text">Azure AD Managed Service Identity</title>
    <published>2017-10-13T07:24:16Z</published>
    <updated>2017-10-13T07:24:16Z</updated>
    <author>
      <name>Joonas Westlin</name>
      <uri>https://joonasw.net</uri>
    </author>
    <link rel="alternate" type="text/html" href="https://joonasw.net/view/azure-ad-managed-service-identity" />
    <rights type="text">Joonas Westlin 2026</rights>
  </entry><entry>
    <id>https://joonasw.net/view/find-out-if-url-matches-action</id>
    <title type="text">Find out if a URL matches an action in ASP.NET MVC Core</title>
    <published>2017-10-02T18:25:50Z</published>
    <updated>2017-10-02T18:25:50Z</updated>
    <author>
      <name>Joonas Westlin</name>
      <uri>https://joonasw.net</uri>
    </author>
    <link rel="alternate" type="text/html" href="https://joonasw.net/view/find-out-if-url-matches-action" />
    <rights type="text">Joonas Westlin 2026</rights>
  </entry><entry>
    <id>https://joonasw.net/view/aspnet-core-localization-deep-dive</id>
    <title type="text">ASP.NET Core Localization Deep Dive</title>
    <published>2017-09-03T13:37:04Z</published>
    <updated>2017-09-03T13:37:04Z</updated>
    <author>
      <name>Joonas Westlin</name>
      <uri>https://joonasw.net</uri>
    </author>
    <link rel="alternate" type="text/html" href="https://joonasw.net/view/aspnet-core-localization-deep-dive" />
    <rights type="text">Joonas Westlin 2026</rights>
  </entry><entry>
    <id>https://joonasw.net/view/aspnet-core-2-configuration-changes</id>
    <title type="text">ASP.NET Core 2.0 Configuration Changes</title>
    <published>2017-07-02T11:42:43Z</published>
    <updated>2017-07-02T11:42:43Z</updated>
    <author>
      <name>Joonas Westlin</name>
      <uri>https://joonasw.net</uri>
    </author>
    <link rel="alternate" type="text/html" href="https://joonasw.net/view/aspnet-core-2-configuration-changes" />
    <rights type="text">Joonas Westlin 2026</rights>
  </entry><entry>
    <id>https://joonasw.net/view/aspnet-core-2-azure-ad-authentication</id>
    <title type="text">ASP.NET Core 2.0 Azure AD Authentication</title>
    <published>2017-06-04T20:53:53Z</published>
    <updated>2017-06-04T20:53:53Z</updated>
    <author>
      <name>Joonas Westlin</name>
      <uri>https://joonasw.net</uri>
    </author>
    <link rel="alternate" type="text/html" href="https://joonasw.net/view/aspnet-core-2-azure-ad-authentication" />
    <rights type="text">Joonas Westlin 2026</rights>
  </entry><entry>
    <id>https://joonasw.net/view/aspnet-core-di-deep-dive</id>
    <title type="text">ASP.NET Core Dependency Injection Deep Dive</title>
    <published>2017-02-10T20:30:04Z</published>
    <updated>2017-02-10T20:30:04Z</updated>
    <author>
      <name>Joonas Westlin</name>
      <uri>https://joonasw.net</uri>
    </author>
    <link rel="alternate" type="text/html" href="https://joonasw.net/view/aspnet-core-di-deep-dive" />
    <rights type="text">Joonas Westlin 2026</rights>
  </entry><entry>
    <id>https://joonasw.net/view/csp-in-aspnet-core</id>
    <title type="text">Content Security Policy (CSP) in ASP.NET Core</title>
    <published>2017-02-01T20:37:46Z</published>
    <updated>2017-02-01T20:37:46Z</updated>
    <author>
      <name>Joonas Westlin</name>
      <uri>https://joonasw.net</uri>
    </author>
    <link rel="alternate" type="text/html" href="https://joonasw.net/view/csp-in-aspnet-core" />
    <rights type="text">Joonas Westlin 2026</rights>
  </entry><entry>
    <id>https://joonasw.net/view/hpkp-in-aspnet-core</id>
    <title type="text">HTTP Public Key Pinning (HPKP) in ASP.NET Core</title>
    <published>2017-01-24T19:41:58Z</published>
    <updated>2017-01-24T19:41:58Z</updated>
    <author>
      <name>Joonas Westlin</name>
      <uri>https://joonasw.net</uri>
    </author>
    <link rel="alternate" type="text/html" href="https://joonasw.net/view/hpkp-in-aspnet-core" />
    <rights type="text">Joonas Westlin 2026</rights>
  </entry><entry>
    <id>https://joonasw.net/view/hsts-in-aspnet-core</id>
    <title type="text">HTTP Strict Transport Security (HSTS) in ASP.NET Core</title>
    <published>2017-01-22T21:03:24Z</published>
    <updated>2017-01-22T21:03:24Z</updated>
    <author>
      <name>Joonas Westlin</name>
      <uri>https://joonasw.net</uri>
    </author>
    <link rel="alternate" type="text/html" href="https://joonasw.net/view/hsts-in-aspnet-core" />
    <rights type="text">Joonas Westlin 2026</rights>
  </entry><entry>
    <id>https://joonasw.net/view/enforcing-https-in-aspnet-core</id>
    <title type="text">Enforcing HTTPS in ASP.NET Core</title>
    <published>2017-01-21T10:26:01Z</published>
    <updated>2017-01-21T10:26:01Z</updated>
    <author>
      <name>Joonas Westlin</name>
      <uri>https://joonasw.net</uri>
    </author>
    <link rel="alternate" type="text/html" href="https://joonasw.net/view/enforcing-https-in-aspnet-core" />
    <rights type="text">Joonas Westlin 2026</rights>
  </entry><entry>
    <id>https://joonasw.net/view/attribute-routing-cheat-sheet-for-aspnet-core</id>
    <title type="text">Attribute routing cheat sheet for ASP.NET Core</title>
    <published>2016-10-22T09:35:46Z</published>
    <updated>2016-10-22T09:35:46Z</updated>
    <author>
      <name>Joonas Westlin</name>
      <uri>https://joonasw.net</uri>
    </author>
    <link rel="alternate" type="text/html" href="https://joonasw.net/view/attribute-routing-cheat-sheet-for-aspnet-core" />
    <rights type="text">Joonas Westlin 2026</rights>
  </entry><entry>
    <id>https://joonasw.net/view/building-a-basic-web-api-on-asp-net-core</id>
    <title type="text">Building a basic Web API on ASP.NET Core</title>
    <published>2016-10-18T18:58:31Z</published>
    <updated>2016-10-18T18:58:31Z</updated>
    <author>
      <name>Joonas Westlin</name>
      <uri>https://joonasw.net</uri>
    </author>
    <link rel="alternate" type="text/html" href="https://joonasw.net/view/building-a-basic-web-api-on-asp-net-core" />
    <rights type="text">Joonas Westlin 2026</rights>
  </entry><entry>
    <id>https://joonasw.net/view/azure-ad-b2c-with-aspnet-core</id>
    <title type="text">Azure AD B2C with ASP.NET Core 1.0</title>
    <published>2016-08-27T19:18:23Z</published>
    <updated>2016-08-27T19:18:23Z</updated>
    <author>
      <name>Joonas Westlin</name>
      <uri>https://joonasw.net</uri>
    </author>
    <link rel="alternate" type="text/html" href="https://joonasw.net/view/azure-ad-b2c-with-aspnet-core" />
    <rights type="text">Joonas Westlin 2026</rights>
  </entry><entry>
    <id>https://joonasw.net/view/asp-net-core-1-azure-ad-authentication</id>
    <title type="text">ASP.NET Core 1.0 Azure AD Authentication</title>
    <published>2016-07-25T12:41:58Z</published>
    <updated>2016-07-25T12:41:58Z</updated>
    <author>
      <name>Joonas Westlin</name>
      <uri>https://joonasw.net</uri>
    </author>
    <link rel="alternate" type="text/html" href="https://joonasw.net/view/asp-net-core-1-azure-ad-authentication" />
    <rights type="text">Joonas Westlin 2026</rights>
  </entry><entry>
    <id>https://joonasw.net/view/asp-net-core-1-configuration-deep-dive</id>
    <title type="text">ASP.NET Core 1.0 Configuration Deep Dive</title>
    <published>2016-06-29T20:35:59Z</published>
    <updated>2016-06-29T20:35:59Z</updated>
    <author>
      <name>Joonas Westlin</name>
      <uri>https://joonasw.net</uri>
    </author>
    <link rel="alternate" type="text/html" href="https://joonasw.net/view/asp-net-core-1-configuration-deep-dive" />
    <rights type="text">Joonas Westlin 2026</rights>
  </entry><entry>
    <id>https://joonasw.net/view/asp-net-core-1-in-azure-web-apps</id>
    <title type="text">ASP.NET Core 1.0 in Azure Web Apps</title>
    <published>2016-06-27T19:12:14Z</published>
    <updated>2016-06-27T19:12:14Z</updated>
    <author>
      <name>Joonas Westlin</name>
      <uri>https://joonasw.net</uri>
    </author>
    <link rel="alternate" type="text/html" href="https://joonasw.net/view/asp-net-core-1-in-azure-web-apps" />
    <rights type="text">Joonas Westlin 2026</rights>
  </entry><entry>
    <id>https://joonasw.net/view/azure-documentdb-and-web-apps-global-deployment</id>
    <title type="text">Azure DocumentDB and Web Apps global deployment</title>
    <published>2016-06-26T12:43:00Z</published>
    <updated>2016-06-26T12:43:00Z</updated>
    <author>
      <name>Joonas Westlin</name>
      <uri>https://joonasw.net</uri>
    </author>
    <link rel="alternate" type="text/html" href="https://joonasw.net/view/azure-documentdb-and-web-apps-global-deployment" />
    <rights type="text">Joonas Westlin 2026</rights>
  </entry><entry>
    <id>https://joonasw.net/view/nested-azure-traffic-manager-profiles</id>
    <title type="text">Nested Azure Traffic Manager profiles</title>
    <published>2016-06-24T19:31:29Z</published>
    <updated>2016-06-24T19:31:29Z</updated>
    <author>
      <name>Joonas Westlin</name>
      <uri>https://joonasw.net</uri>
    </author>
    <link rel="alternate" type="text/html" href="https://joonasw.net/view/nested-azure-traffic-manager-profiles" />
    <rights type="text">Joonas Westlin 2026</rights>
  </entry><entry>
    <id>https://joonasw.net/view/arr-affinity-in-azure-app-service</id>
    <title type="text">ARR Affinity in Azure App Service</title>
    <published>2016-06-24T08:36:20Z</published>
    <updated>2016-06-24T08:36:20Z</updated>
    <author>
      <name>Joonas Westlin</name>
      <uri>https://joonasw.net</uri>
    </author>
    <link rel="alternate" type="text/html" href="https://joonasw.net/view/arr-affinity-in-azure-app-service" />
    <rights type="text">Joonas Westlin 2026</rights>
  </entry><entry>
    <id>https://joonasw.net/view/welcome</id>
    <title type="text">Welcome</title>
    <published>2016-06-23T10:00:00Z</published>
    <updated>2016-06-23T10:00:00Z</updated>
    <author>
      <name>Joonas Westlin</name>
      <uri>https://joonasw.net</uri>
    </author>
    <link rel="alternate" type="text/html" href="https://joonasw.net/view/welcome" />
    <rights type="text">Joonas Westlin 2026</rights>
  </entry>
</feed>