首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何用OpenIddict核心DataProtection正确配置ASP.NET

如何用OpenIddict核心DataProtection正确配置ASP.NET
EN

Stack Overflow用户
提问于 2021-12-11 19:37:26
回答 1查看 1.5K关注 0票数 1

我正在尝试使用OpenIddict核心DataProtection来设置ASP.NET,但是,在尝试启动应用程序时,我仍然会遇到异常:

InvalidOperationException: At least one encryption key must be registered in the OpenIddict server options. Consider registering a certificate using 'services.AddOpenIddict().AddServer().AddEncryptionCertificate()' or 'services.AddOpenIddict().AddServer().AddDevelopmentEncryptionCertificate()' or call 'services.AddOpenIddict().AddServer().AddEphemeralEncryptionKey()' to use an ephemeral key.

现在我明白了错误需要我做什么,我需要添加一个签名密钥/加密证书,但是为什么呢?

使用DataProtection的全部目的不是这个部分是自动化的,不需要您添加一个显式签名密钥/加密证书吗?根据文档,应该使用DataProtection加密除JWT令牌之外的所有密钥。

这是当前的代码:

代码语言:javascript
运行
复制
            if (authenticationOptions.DataProtection.TokenProtection.Enabled)
                services
                    .AddDataProtection(options =>
                    {
                        options.ApplicationDiscriminator = applicationOptions.ShortName;
                    })
                    .SetApplicationName(applicationOptions.Name)
                    .SetDefaultKeyLifetime(TimeSpan.FromDays(authenticationOptions.DataProtection.TokenProtection.LifeTime))
                    .PersistKeysToAzureBlobStorage(CreateDataProtectionBlobClient(azureOptions.BlobStorageUrl, authenticationOptions.DataProtection, azureCredential))
                    .ProtectKeysWithAzureKeyVault(completeKeyVaultUri, azureCredential);
            }

            services.AddOpenIddict()
                .AddCore(options =>
                {
                    options.UseEntityFrameworkCore()
                        .UseDbContext<ApplicationDbContext>()
                        .ReplaceDefaultEntities<long>(); ;
                })
                .AddServer(options =>
                {
                    options.SetAuthorizationEndpointUris("connect/auth");
                    options.SetTokenEndpointUris("/connect/token");

                    options.AllowAuthorizationCodeFlow();
                    options.AllowClientCredentialsFlow();
                    options.AllowRefreshTokenFlow();

                    options.UseAspNetCore()
                        .EnableAuthorizationEndpointPassthrough()
                        .EnableTokenEndpointPassthrough();

                    options.UseDataProtection();
                    //options.AddEphemeralSigningKey();
                    //options.AddEphemeralEncryptionKey();
                })
                .AddValidation(options =>
                {
                    options.UseLocalServer();
                    options.UseAspNetCore();
                    options.UseDataProtection();
                });
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70318415

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档