小编mar*_*ght的帖子

与 .NET Core 应用程序共享 ASP.NET Owin Cookie,同时将密钥保留到 Azure 存储

我们有一个针对 ASP.Net Framework (4.7.2) 构建的 WebForms 应用程序,该应用程序使用 OWIN cookie 身份验证。作为向 .Net Core 迁移的一部分,我们希望在 .Net Core (2.1) API 应用程序中使用 cookie。

WebForms 应用程序在 Azure 中运行,并利用DataProtectionStartup挂钩到IServiceCollection 机器密钥文件来使用 Microsoft 文档中的PersistKeysToAzureBlobStorage方法。Microsoft.AspNetCore.DataProtection

网页表格DataProtectionStartup

    services.AddDataProtection()
        .PersistKeysToAzureBlobStorage(blockblob)
        .SetApplicationName("OurAppName");
Run Code Online (Sandbox Code Playgroud)

.Net核心APIStartup

    services.AddDataProtection()
        .PersistKeysToAzureBlobStorage(blockblob)
        .SetApplicationName("OurAppName");
Run Code Online (Sandbox Code Playgroud)

两个应用程序都可以愉快地运行,生成机器密钥并将其存储在 blob 存储中。

Microsoft 有 文档 详细介绍了如何使用 DataProtectorShimfrom Microsoft.Owin.Security.Interop. 需要从共享计算机密钥DataProtectionShim生成DataProtectionProvider ,在文档中,两个应用程序都引用了该密钥来创建 cookie,并使用DataProtectionProvider.Create()将文件位置作为参数的方法。

当我们使用DataProtectionblob 存储时,我们没有这个位置。我们尝试 DataProtectionProvider.Create() 在两个应用程序上仅使用应用程序名称,因为它将使用 blob 存储密钥文件。不幸的是,这不会创建跨两个应用程序都有效的 cookie。

OWIN cookie 身份验证设置OwinStartup

    app.UseCookieAuthentication(new CookieAuthenticationOptions
        {
            AuthenticationType = …
Run Code Online (Sandbox Code Playgroud)

c# asp.net cookies azure-blob-storage asp.net-core

6
推荐指数
2
解决办法
3962
查看次数

标签 统计

asp.net ×1

asp.net-core ×1

azure-blob-storage ×1

c# ×1

cookies ×1