Microsoft.AspNetCore.DataProtection 用 Azure Storage BLOB キー ストア

パッケージをAzure.Extensions.AspNetCore.DataProtection.Blobs使用すると、ASP.NET Core DataProtection キーをAzure Blob Storageに格納できます。 キーは、Web アプリの複数のインスタンス間で共有できます。 アプリは、複数のサーバー間で認証 Cookie または CSRF 保護を共有できます。

作業の開始

パッケージをインストールする

NuGet を使用してパッケージをインストールします。

dotnet add package Azure.Extensions.AspNetCore.DataProtection.Blobs

前提条件

このパッケージを使用するには、 Azure サブスクリプションストレージ アカウントストレージ コンテナー が必要です。

新しいストレージ アカウントを作成するには、Azure PortalAzure PowerShell、または Azure CLI を使用できます。 Azure CLI を使う例を次に示します。

az storage account create --name <storage-account> --resource-group <resource-group> --location westus --sku Standard_LRS
az storage container create --account-name <storage-account> -n <container>

# Give write access to a user
az role assignment create --role "Storage Blob Data Contributor" --assignee <your_email> --scope "/subscriptions/<subscription>/resourceGroups/<resource-group>/providers/Microsoft.Storage/storageAccounts/<storage-account>/blobServices/default/containers/<container>"

# OR give write access to a service principal (application)
az role assignment create --role "Storage Blob Data Contributor" --assignee-object-id <application_id> --scope "/subscriptions/<subscription>/resourceGroups/<resource-group>/providers/Microsoft.Storage/storageAccounts/<storage-account>/blobServices/default/containers/<container>"

主要な概念

スレッド セーフ

すべてのクライアント インスタンス メソッドがスレッド セーフであり、相互に独立していることを保証します (ガイドライン)。 これにより、クライアント インスタンスの再利用に関する推奨事項は、スレッド間でも常に安全になります。

その他の概念

クライアント オプション | 応答 | へのアクセス実行時間の長い操作 | エラーの | 処理診断 | あざける | クライアントの有効期間

Azure Blob Storageにキーの永続化を有効にするには、 メソッドをPersistKeysToAzureBlobStorage呼び出します。 提供される は Uri 、次の形式 https://{storage_account}.blob.core.windows.net/{container}/{blob}の BLOB URI である必要があります。

public void ConfigureServices(IServiceCollection services)
{
    services
        .AddDataProtection()
        .PersistKeysToAzureBlobStorage(new Uri("<full-blob-URI>"), new DefaultAzureCredential());
}

Azure Identity ライブラリは、認証に対する Azure Active Directory のサポートを簡単に提供します。

接続文字列を使用した認証

public void ConfigureServices(IServiceCollection services)
{
    services
        .AddDataProtection()
        .PersistKeysToAzureBlobStorage("<connection string>", "<container name>", "<blob name>");
}

次の手順

詳細については、ASP.NET Coreの DataProtection に関するページを参照してください。

共同作成

このプロジェクトでは、共同作成と提案を歓迎しています。 ほとんどの共同作成では、共同作成者使用許諾契約書 (CLA) にご同意いただき、ご自身の共同作成内容を使用する権利を Microsoft に供与する権利をお持ちであり、かつ実際に供与することを宣言していただく必要があります。 詳細については、「 cla.microsoft.com」を参照してください。

このプロジェクトでは、Microsoft オープン ソースの倫理規定を採用しています。 詳しくは、「Code of Conduct FAQ (倫理規定についてよくある質問)」を参照するか、opencode@microsoft.com 宛てに質問またはコメントをお送りください。

インプレッション数