首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ASP.NET核心OpenIdConnectServer数据保护密钥位置

ASP.NET核心OpenIdConnectServer数据保护密钥位置
EN

Stack Overflow用户
提问于 2016-10-08 21:08:57
回答 1查看 2.1K关注 0票数 5

你好,

在我的ASP.NET核心应用程序中,我使用OpenIdConnectServer进行Api身份验证。一切都很好。

但是有一件事我无法解决--如何设置自定义文件夹来保存令牌签名密钥?

在服务配置中,我有:

代码语言:javascript
复制
services.AddDataProtection()
        .PersistKeysToFileSystem(new DirectoryInfo(@"keys/"));

第一次运行后,将在那里创建一个应用程序键。但是OpenIdServer以某种方式自行管理密钥。

代码语言:javascript
复制
app.UseOpenIdConnectServer(options => {
    ...
    options.DataProtectionProvider = app.ApplicationServices.GetDataProtectionProvider();
    ...
});

尽管如此,凭据签名键还是在默认位置创建的:

代码语言:javascript
复制
 A new RSA key ... persisted on the disk: /home/.../.aspnet/aspnet-contrib/oidc-server/<some guid>.key.

那是窃听器还是功能?如何迫使服务器也将密钥存储在keys/文件夹中?

摘要-为什么我要这么做

我的想法是从n个码头映像中构建一个API,将其隐藏在一个负载均衡器后面,然后在云中某个地方运行。问题是,当docker中的每个实例创建自己的应用程序&签名密钥时,加密的auth令牌将不适用于任何其他实例,只有创建并用其密钥对令牌进行签名的实例除外。因此,我试图将相同的密钥分发到每个正在运行的码头映像中。到预定义的应用程序文件夹,如果可能的话。

或者是否有更好的方法或最佳做法?

提前谢谢你。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-10-08 23:56:40

嗯,我想出来了。

首先,我们必须生成一个x509证书(带有私钥),如描述的here

代码语言:javascript
复制
openssl genrsa -out private.key 1024
openssl req -new -x509 -key private.key -out publickey.cer -days 365
openssl pkcs12 -export -out certificate.pfx -inkey private.key -in publickey.cer

将其复制到您喜欢的文件夹中,在本例中为key/certificate.pfx

然后,轻轻地将新证书插入OpenIdConnectServer:

appsettings.json

代码语言:javascript
复制
"Keys": {
    "CertificatePath": "keys/certificate.pfx",
    "CertificatePassword": "<password you provider>"
}

Startup.cs

代码语言:javascript
复制
private X509Certificate2 CreateOauthCertificate(){
        var path = Configuration["Keys:CertificatePath"];
        var password = Configuration["Keys:CertificatePassword"];
        return new X509Certificate2(path, password);
    }

Starup.cs -配置

代码语言:javascript
复制
app.UseOpenIdConnectServer(
    ...
    options.SigningCredentials.AddCertificate(CreateOauthCertificate());
    ...
});

现在我很好奇有没有更好的方法。

但这个很管用。

问候

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39937411

复制
相关文章

相似问题

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