diff --git a/eng/Dependencies.props b/eng/Dependencies.props
index 0b5a894d44c9e18eb087ffa495e8669c74e750cc..8cfcf96d7fd3d1333875581644c4cf94d0780c85 100644
--- a/eng/Dependencies.props
+++ b/eng/Dependencies.props
@@ -41,6 +41,7 @@ and are generated based on the last package release.
     <LatestPackageReference Include="Microsoft.AspNetCore.Razor.Language" Version="$(MicrosoftAspNetCoreRazorLanguagePackageVersion)" />
     <LatestPackageReference Include="Microsoft.AspNetCore.Testing" Version="$(MicrosoftAspNetCoreTestingPackageVersion)" />
     <LatestPackageReference Include="Microsoft.Azure.KeyVault" Version="$(MicrosoftAzureKeyVaultPackageVersion)" />
+    <LatestPackageReference Include="Microsoft.Azure.Storage.Blob" Version="$(MicrosoftAzureStorageBlobPackageVersion)" />
     <LatestPackageReference Include="Microsoft.Bcl.Json.Sources" Version="$(MicrosoftBclJsonSourcesPackageVersion)" />
     <LatestPackageReference Include="Microsoft.Build.Framework" Version="$(MicrosoftBuildFrameworkPackageVersion)" />
     <LatestPackageReference Include="Microsoft.Build.Utilities.Core" Version="$(MicrosoftBuildUtilitiesCorePackageVersion)" />
@@ -159,7 +160,6 @@ and are generated based on the last package release.
     <LatestPackageReference Include="System.Threading.Channels" Version="$(SystemThreadingChannelsPackageVersion)" />
     <LatestPackageReference Include="System.Threading.Tasks.Extensions" Version="$(SystemThreadingTasksExtensionsPackageVersion)" />
     <LatestPackageReference Include="Utf8Json" Version="$(Utf8JsonPackageVersion)" />
-    <LatestPackageReference Include="WindowsAzure.Storage" Version="$(WindowsAzureStoragePackageVersion)" />
     <LatestPackageReference Include="xunit.abstractions" Version="$(XunitAbstractionsPackageVersion)" />
     <LatestPackageReference Include="xunit.analyzers" Version="$(XunitAnalyzersPackageVersion)" />
     <LatestPackageReference Include="xunit.assert" Version="$(XunitAssertPackageVersion)" />
diff --git a/eng/Versions.props b/eng/Versions.props
index d81cd3283be309ef7ed0fd7997ee9f077274995e..5939d6cc6c5245af3fee5e91a64ba44304b37e07 100644
--- a/eng/Versions.props
+++ b/eng/Versions.props
@@ -146,6 +146,7 @@
     <MicrosoftAspNetWebApiClientPackageVersion>5.2.6</MicrosoftAspNetWebApiClientPackageVersion>
     <!-- Partner teams -->
     <MicrosoftAzureKeyVaultPackageVersion>2.3.2</MicrosoftAzureKeyVaultPackageVersion>
+    <MicrosoftAzureStorageBlobPackageVersion>10.0.1</MicrosoftAzureStorageBlobPackageVersion>
     <MicrosoftBuildFrameworkPackageVersion>15.8.166</MicrosoftBuildFrameworkPackageVersion>
     <MicrosoftBuildUtilitiesCorePackageVersion>15.8.166</MicrosoftBuildUtilitiesCorePackageVersion>
     <MicrosoftCodeAnalysisCommonPackageVersion>2.8.0</MicrosoftCodeAnalysisCommonPackageVersion>
@@ -162,7 +163,6 @@
     <MicrosoftWebAdministrationPackageVersion>11.1.0</MicrosoftWebAdministrationPackageVersion>
     <MicrosoftWebXdtPackageVersion>1.4.0</MicrosoftWebXdtPackageVersion>
     <SystemIdentityModelTokensJwtPackageVersion>5.3.0</SystemIdentityModelTokensJwtPackageVersion>
-    <WindowsAzureStoragePackageVersion>8.1.4</WindowsAzureStoragePackageVersion>
     <!-- Dependencies for Blazor. -->
     <MicrosoftAspNetCoreBlazorMonoPackageVersion>0.10.0-preview-20190325.1</MicrosoftAspNetCoreBlazorMonoPackageVersion>
     <!-- Packages from 2.1/2.2 branches used for site extension build -->
diff --git a/src/DataProtection/AzureStorage/ref/Microsoft.AspNetCore.DataProtection.AzureStorage.csproj b/src/DataProtection/AzureStorage/ref/Microsoft.AspNetCore.DataProtection.AzureStorage.csproj
index 890377f7b2e6f966bb1667c0d04e3c6792075123..dc9fa4eb09107452ca0e3bfed4c988194458b321 100644
--- a/src/DataProtection/AzureStorage/ref/Microsoft.AspNetCore.DataProtection.AzureStorage.csproj
+++ b/src/DataProtection/AzureStorage/ref/Microsoft.AspNetCore.DataProtection.AzureStorage.csproj
@@ -6,6 +6,6 @@
   <ItemGroup Condition="'$(TargetFramework)' == 'netcoreapp3.0'">
     <Compile Include="Microsoft.AspNetCore.DataProtection.AzureStorage.netcoreapp3.0.cs" />
     <Reference Include="Microsoft.AspNetCore.DataProtection"  />
-    <Reference Include="WindowsAzure.Storage"  />
+    <Reference Include="Microsoft.Azure.Storage.Blob"  />
   </ItemGroup>
 </Project>
diff --git a/src/DataProtection/AzureStorage/ref/Microsoft.AspNetCore.DataProtection.AzureStorage.netcoreapp3.0.cs b/src/DataProtection/AzureStorage/ref/Microsoft.AspNetCore.DataProtection.AzureStorage.netcoreapp3.0.cs
index 9270109ec2d0a60e4542f35797122265271c0d93..9d6c003d3eff09a979f4bb56b736ac24db52617a 100644
--- a/src/DataProtection/AzureStorage/ref/Microsoft.AspNetCore.DataProtection.AzureStorage.netcoreapp3.0.cs
+++ b/src/DataProtection/AzureStorage/ref/Microsoft.AspNetCore.DataProtection.AzureStorage.netcoreapp3.0.cs
@@ -5,9 +5,9 @@ namespace Microsoft.AspNetCore.DataProtection
 {
     public static partial class AzureDataProtectionBuilderExtensions
     {
-        public static Microsoft.AspNetCore.DataProtection.IDataProtectionBuilder PersistKeysToAzureBlobStorage(this Microsoft.AspNetCore.DataProtection.IDataProtectionBuilder builder, Microsoft.WindowsAzure.Storage.Blob.CloudBlobContainer container, string blobName) { throw null; }
-        public static Microsoft.AspNetCore.DataProtection.IDataProtectionBuilder PersistKeysToAzureBlobStorage(this Microsoft.AspNetCore.DataProtection.IDataProtectionBuilder builder, Microsoft.WindowsAzure.Storage.Blob.CloudBlockBlob blobReference) { throw null; }
-        public static Microsoft.AspNetCore.DataProtection.IDataProtectionBuilder PersistKeysToAzureBlobStorage(this Microsoft.AspNetCore.DataProtection.IDataProtectionBuilder builder, Microsoft.WindowsAzure.Storage.CloudStorageAccount storageAccount, string relativePath) { throw null; }
+        public static Microsoft.AspNetCore.DataProtection.IDataProtectionBuilder PersistKeysToAzureBlobStorage(this Microsoft.AspNetCore.DataProtection.IDataProtectionBuilder builder, Microsoft.Azure.Storage.Blob.CloudBlobContainer container, string blobName) { throw null; }
+        public static Microsoft.AspNetCore.DataProtection.IDataProtectionBuilder PersistKeysToAzureBlobStorage(this Microsoft.AspNetCore.DataProtection.IDataProtectionBuilder builder, Microsoft.Azure.Storage.Blob.CloudBlockBlob blobReference) { throw null; }
+        public static Microsoft.AspNetCore.DataProtection.IDataProtectionBuilder PersistKeysToAzureBlobStorage(this Microsoft.AspNetCore.DataProtection.IDataProtectionBuilder builder, Microsoft.Azure.Storage.CloudStorageAccount storageAccount, string relativePath) { throw null; }
         public static Microsoft.AspNetCore.DataProtection.IDataProtectionBuilder PersistKeysToAzureBlobStorage(this Microsoft.AspNetCore.DataProtection.IDataProtectionBuilder builder, System.Uri blobUri) { throw null; }
     }
 }
@@ -15,7 +15,7 @@ namespace Microsoft.AspNetCore.DataProtection.AzureStorage
 {
     public sealed partial class AzureBlobXmlRepository : Microsoft.AspNetCore.DataProtection.Repositories.IXmlRepository
     {
-        public AzureBlobXmlRepository(System.Func<Microsoft.WindowsAzure.Storage.Blob.ICloudBlob> blobRefFactory) { }
+        public AzureBlobXmlRepository(System.Func<Microsoft.Azure.Storage.Blob.ICloudBlob> blobRefFactory) { }
         public System.Collections.Generic.IReadOnlyCollection<System.Xml.Linq.XElement> GetAllElements() { throw null; }
         public void StoreElement(System.Xml.Linq.XElement element, string friendlyName) { }
     }
diff --git a/src/DataProtection/AzureStorage/src/AzureBlobXmlRepository.cs b/src/DataProtection/AzureStorage/src/AzureBlobXmlRepository.cs
index e39babaa315f9ad302fec929fb1bdc892726f345..4467235c2e6e609c4b9325c2ab4c43e1bb6e009c 100644
--- a/src/DataProtection/AzureStorage/src/AzureBlobXmlRepository.cs
+++ b/src/DataProtection/AzureStorage/src/AzureBlobXmlRepository.cs
@@ -1,4 +1,4 @@
-// Copyright (c) .NET Foundation. All rights reserved.
+// Copyright (c) .NET Foundation. All rights reserved.
 // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
 
 using System;
@@ -12,8 +12,8 @@ using System.Threading.Tasks;
 using System.Xml;
 using System.Xml.Linq;
 using Microsoft.AspNetCore.DataProtection.Repositories;
-using Microsoft.WindowsAzure.Storage;
-using Microsoft.WindowsAzure.Storage.Blob;
+using Microsoft.Azure.Storage;
+using Microsoft.Azure.Storage.Blob;
 
 namespace Microsoft.AspNetCore.DataProtection.AzureStorage
 {
@@ -42,12 +42,7 @@ namespace Microsoft.AspNetCore.DataProtection.AzureStorage
         /// concurrent threads, and each invocation must return a new object.</param>
         public AzureBlobXmlRepository(Func<ICloudBlob> blobRefFactory)
         {
-            if (blobRefFactory == null)
-            {
-                throw new ArgumentNullException(nameof(blobRefFactory));
-            }
-
-            _blobRefFactory = blobRefFactory;
+            _blobRefFactory = blobRefFactory ?? throw new ArgumentNullException(nameof(blobRefFactory));
             _random = new Random();
         }
 
diff --git a/src/DataProtection/AzureStorage/src/AzureDataProtectionBuilderExtensions.cs b/src/DataProtection/AzureStorage/src/AzureDataProtectionBuilderExtensions.cs
index 8ff62929e2e981c576b03797b860d76bed3d0a0a..34bb3edf08b8bbbf88375d45bc145d63889c83f8 100644
--- a/src/DataProtection/AzureStorage/src/AzureDataProtectionBuilderExtensions.cs
+++ b/src/DataProtection/AzureStorage/src/AzureDataProtectionBuilderExtensions.cs
@@ -1,13 +1,13 @@
-// Copyright (c) .NET Foundation. All rights reserved.
+// Copyright (c) .NET Foundation. All rights reserved.
 // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
 
 using System;
 using Microsoft.AspNetCore.DataProtection.AzureStorage;
 using Microsoft.AspNetCore.DataProtection.KeyManagement;
+using Microsoft.Azure.Storage;
+using Microsoft.Azure.Storage.Auth;
+using Microsoft.Azure.Storage.Blob;
 using Microsoft.Extensions.DependencyInjection;
-using Microsoft.WindowsAzure.Storage;
-using Microsoft.WindowsAzure.Storage.Auth;
-using Microsoft.WindowsAzure.Storage.Blob;
 
 namespace Microsoft.AspNetCore.DataProtection
 {
diff --git a/src/DataProtection/AzureStorage/src/Microsoft.AspNetCore.DataProtection.AzureStorage.csproj b/src/DataProtection/AzureStorage/src/Microsoft.AspNetCore.DataProtection.AzureStorage.csproj
index a5a03e9ab0d6fc1e8a1d7846c268a282f5a86d30..ea12eab5e9b7870913b481945bcce4ee29807b9b 100644
--- a/src/DataProtection/AzureStorage/src/Microsoft.AspNetCore.DataProtection.AzureStorage.csproj
+++ b/src/DataProtection/AzureStorage/src/Microsoft.AspNetCore.DataProtection.AzureStorage.csproj
@@ -11,7 +11,12 @@
 
   <ItemGroup>
     <Reference Include="Microsoft.AspNetCore.DataProtection" />
-    <Reference Include="WindowsAzure.Storage" />
+    <Reference Include="Microsoft.Azure.Storage.Blob" />
+  </ItemGroup>
+
+  <ItemGroup Condition="'$(AspNetCoreMajorMinorVersion)' == '3.0'">
+    <!-- This dependency was replaced by Microsoft.Azure.Storage.Blob between 3.0 and 2.2. This suppression can be removed after 3.0 is complete. -->
+    <SuppressBaselineReference Include="WindowsAzure.Storage" />
   </ItemGroup>
 
 </Project>
diff --git a/src/DataProtection/AzureStorage/test/AzureBlobXmlRepositoryTests.cs b/src/DataProtection/AzureStorage/test/AzureBlobXmlRepositoryTests.cs
index 61d5d0ae78064283cc59617ec494995eafc80e6a..868e08b7584dd1fbf8e7c56d739fd99c865b4db8 100644
--- a/src/DataProtection/AzureStorage/test/AzureBlobXmlRepositoryTests.cs
+++ b/src/DataProtection/AzureStorage/test/AzureBlobXmlRepositoryTests.cs
@@ -1,4 +1,4 @@
-// Copyright (c) .NET Foundation. All rights reserved.
+// Copyright (c) .NET Foundation. All rights reserved.
 // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
 
 using System.IO;
@@ -6,8 +6,8 @@ using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
 using System.Xml.Linq;
-using Microsoft.WindowsAzure.Storage;
-using Microsoft.WindowsAzure.Storage.Blob;
+using Microsoft.Azure.Storage;
+using Microsoft.Azure.Storage.Blob;
 using Moq;
 using Xunit;
 
diff --git a/src/DataProtection/AzureStorage/test/AzureDataProtectionBuilderExtensionsTest.cs b/src/DataProtection/AzureStorage/test/AzureDataProtectionBuilderExtensionsTest.cs
index d386352b730777059af3d64b8ae8d2342c973cab..88e673d98080e6711fc0a37fd5f0b54f937d9362 100644
--- a/src/DataProtection/AzureStorage/test/AzureDataProtectionBuilderExtensionsTest.cs
+++ b/src/DataProtection/AzureStorage/test/AzureDataProtectionBuilderExtensionsTest.cs
@@ -1,11 +1,11 @@
-// Copyright (c) .NET Foundation. All rights reserved.
+// Copyright (c) .NET Foundation. All rights reserved.
 // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
 
 using System;
 using Microsoft.AspNetCore.DataProtection.KeyManagement;
 using Microsoft.Extensions.DependencyInjection;
 using Microsoft.Extensions.Options;
-using Microsoft.WindowsAzure.Storage.Blob;
+using Microsoft.Azure.Storage.Blob;
 using Xunit;
 
 namespace Microsoft.AspNetCore.DataProtection.AzureStorage
diff --git a/src/DataProtection/samples/AzureBlob/Program.cs b/src/DataProtection/samples/AzureBlob/Program.cs
index cce8604648277b56ef2956ade60a20a979079ad8..2adc7c0aa9135fea62dee82048df55b9232ceb06 100644
--- a/src/DataProtection/samples/AzureBlob/Program.cs
+++ b/src/DataProtection/samples/AzureBlob/Program.cs
@@ -1,11 +1,12 @@
-// Copyright (c) .NET Foundation. All rights reserved.
+// Copyright (c) .NET Foundation. All rights reserved.
 // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
 
 using System;
 using Microsoft.AspNetCore.DataProtection;
+using Microsoft.Azure.Storage;
+using Microsoft.Azure.Storage.Blob;
 using Microsoft.Extensions.DependencyInjection;
 using Microsoft.Extensions.Logging;
-using Microsoft.WindowsAzure.Storage;
 using LogLevel = Microsoft.Extensions.Logging.LogLevel;
 
 namespace AzureBlob