相关疑难解决方法(0)

X.509:私钥/公钥

我们正试图从我们的合作伙伴那里实现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)

我是否必须修改命令才能创建私钥和公钥?

openssl x509 public-key private-key

29
推荐指数
3
解决办法
6万
查看次数

通过JWT Token授权

使用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)
  • 如何强制使用我的证书验证请求,以确保JWT令牌未被篡改.
  • 什么是允许验证和授权我的JWT令牌的正确设置,因为如果我不使用JWT,我将获得成功授权.

jwt openid-connect aspnet-contrib asp.net-core openiddict

5
推荐指数
1
解决办法
1859
查看次数