gpt4 book ai didi

asp.net-core - 通过 JWT token 授权

转载 作者:行者123 更新时间:2023-12-02 03:46:09 25 4
gpt4 key购买 nike

带有 ASP.NET Identity 3.0 的 ASP.NET Core 5,我同时使用网页和 api。我正在使用 OpenIddict 颁发 JWT token 并进行身份验证。我的代码如下所示:

    X509Certificate2 c = new X509Certificate2(@"tokensign.p12", "MyCertificatePassword");

services.AddOpenIddict<WebUser, IdentityRole<int>, WebDbContext, int>()
.EnableTokenEndpoint("/api/customauth/login")
.AllowPasswordFlow()
.UseJsonWebTokens()
.AddSigningCertificate(c);

如果我禁用 UseJsonWebTokens(),我可以生成 token 并成功授权。但是,我不确定我的证书是否正在验证返回的 token 。

当启用 UseJsonWebTokens 时,我可以在此端点发出 JWT token 。但是,我无法验证任何请求!

我在应用程序配置中使用以下代码:

    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();
  • 如何强制使用我的证书验证请求,以确保 JWT token 不被篡改。
  • 如果我不使用 JWT,我就能成功获得授权,那么允许对我的 JWT token 进行验证和授权的正确设置是什么。

最佳答案

If I disable UseJsonWebTokens(), I can generate a token and authorise successfully. However, I am not sure that my certificate is validating the returned tokens.

在 ASOS(OpenIddict 背后的 OpenID Connect 服务器框架)中,有两种不同的内置序列化机制来创建和保护 token :

  • 使用 IdentityModel(Microsoft 开发的一个库)并生成可由第三方验证的标准 token :

身份 token (定义为 JWT)始终使用此过程创建,您可以调用 UseJsonWebTokens() 强制 OpenIddict 颁发使用相同序列化过程的访问 token 。

您在调用AddSigningCertificate()时指定的证书始终用于签署这些 token 。

  • 使用 ASP.NET Core 数据保护堆栈(也由 Microsoft 开发):

该堆栈专门生成“专​​有” token ,这些 token 不应由第三方读取或验证,因为 token 格式不是标准的,并且必然依赖于对称签名和加密。

这是我们用于授权代码和刷新 token 的机制,仅供 OpenIddict 本身使用。当您使用默认 token 格式时,它还用于访问 token 。

在这种情况下,不会使用您在调用 AddSigningCertificate() 时指定的证书。

相反,数据保护堆栈始终使用经过身份验证的加密算法(默认情况下使用 HMACSHA256 的 AES-256-CBC)对这些 token 进行加密,从而提供真实性、完整性和 secret 性。为此,数据保护堆栈从 key 环中存储的主 key 之一派生出 2 个 key (一个用于加密,一个用于验证)。

How can I enforce the request to be validated with my certificate to make sure the JWT token is not tampered with. What are the correct settings that will allow validation and authorisation of my JWT token, given that if I am not using JWT, I am getting authorised successfully.

要回答这些问题,如果您启用日志记录并共享您的跟踪记录将会有所帮助。

关于asp.net-core - 通过 JWT token 授权,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38541772/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com