我们正试图从我们的合作伙伴那里实现Web服务的某些功能.现在,传输的内容应该使用我们必须提供的公钥加密.
安全规范说公共证书必须是X.509标准.X.509不依赖于私钥/公钥方法吗?因为我只使用以下命令获得一个.pem文件,包含私钥和证书,但没有公钥:
openssl req -new -x509 -days 365 -nodes -out ./cert.pem -keyout ./cert.pem
Run Code Online (Sandbox Code Playgroud)
我是否必须修改命令才能创建私钥和公钥?
使用ASP.NET Identity 3.0的ASP.NET Core 5,我正在使用网页和apis.我正在使用OpenIddict发出JWT令牌并进行身份验证.我的代码看起来像这样:
X509Certificate2 c = new X509Certificate2(@"tokensign.p12", "MyCertificatePassword");
services.AddOpenIddict<WebUser, IdentityRole<int>, WebDbContext, int>()
.EnableTokenEndpoint("/api/customauth/login")
.AllowPasswordFlow()
.UseJsonWebTokens()
.AddSigningCertificate(c);
Run Code Online (Sandbox Code Playgroud)
如果我禁用UseJsonWebTokens(),我可以生成一个令牌并成功授权.但是,我不确定我的证书是否验证了返回的令牌.
当启用UseJsonWebTokens时,我能够在此终点发出JWT令牌.但是,我无法验证任何请求!
我在应用程序配置中使用以下代码:
app.UseJwtBearerAuthentication(new JwtBearerOptions
{
AutomaticAuthenticate = true,
AutomaticChallenge = true,
RequireHttpsMetadata = false,
Authority = "http://localhost:60000/",
Audience = "http://localhost:60000/",
});
app.UseOAuthValidation();
app.UseIdentity();
app.UseOpenIddict();
app.UseMvcWithDefaultRoute();
Run Code Online (Sandbox Code Playgroud)