你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
适用于 Microsoft.AspNetCore.DataProtection 的 Azure 存储 Blob 密钥存储
包Azure.Extensions.AspNetCore.DataProtection.Blobs
允许在 Azure Blob 存储 中存储 ASP.NET Core DataProtection 密钥。 可以在 Web 应用的多个实例之间共享密钥。 应用可以在多个服务器之间共享身份验证 Cookie 或 CSRF 保护。
入门
安装包
使用 NuGet 安装包:
dotnet add package Azure.Extensions.AspNetCore.DataProtection.Blobs
先决条件
需要 Azure 订阅、 存储帐户 和 存储容器 才能使用此包。
若要创建新的存储帐户,可以使用 Azure 门户、Azure 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 存储请调用 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 标识库为身份验证提供简单的 Azure Active Directory 支持。
使用连接字符串进行身份验证
public void ConfigureServices(IServiceCollection services)
{
services
.AddDataProtection()
.PersistKeysToAzureBlobStorage("<connection string>", "<container name>", "<blob name>");
}
后续步骤
详细了解 ASP.NET Core 中的 DataProtection。
贡献
本项目欢迎贡献和建议。 大多数贡献要求你同意贡献者许可协议 (CLA),并声明你有权(并且确实有权)授予我们使用你的贡献的权利。 有关详细信息,请访问 cla.microsoft.com。
此项目采用了 Microsoft 开放源代码行为准则。 有关详细信息,请参阅行为准则常见问题解答,或如果有任何其他问题或意见,请与 联系。