.NET Core 使用 OAuth(JWT 令牌验证)将代码发布到 aws

问题描述 投票:0回答:1

我们有一个使用 Azure AD 在 Azure 中工作的 .NET Core 应用程序,通过使用以下代码在

startup.cs
文件中启用它:

builder.Services
       .AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
       .AddMicrosoftIdentityWebApi(builder.Configuration.GetSection("AADConfig")); 

我们是 AWS 新手,但需要将 API 发布到 AWS Amplify,其中令牌将由 AWS Cognito 使用 Angular 应用程序颁发,这似乎工作正常。

但现在从 API 端,我需要验证 JWT 令牌。

我尝试用这段代码来做:

builder.Services.AddAuthentication()
    .AddJwtBearer(options =>
    {
        options.SaveToken = true;
        options.TokenValidationParameters = new TokenValidationParameters
        {
            ValidIssuer = configs.Issuer,//"https://cognito-idp.{aws region here}.amazonaws.com/{Cognito UserPoolId here}",
            ValidateIssuerSigningKey = true,
            ValidateIssuer = true,
            ValidateLifetime = true,
            ValidAudience = configs.ClientId,
            ValidateAudience = true
        };
        //options.MetadataAddress = configs.KnownKeyUrl;//Knowkye url is like  "https://cognito-idp.{aws region here}.amazonaws.com/{Cognito UserPoolId here}/.well-known/openid-configuration";
    });

由于令牌将由 Cognito 颁发,我没有密钥,并且不想将其保留在配置或代码中,更喜欢验证颁发者、使用众所周知的配置或其他更好的方式签名密钥

IssuerSigningKey = new SymmetricSecurityKey(key)

我的控制器用属性装饰

[Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme)]

但是使用上面的代码我不断收到类似的错误

签名无效

承载错误=“invalid_token”,error_description=“未找到签名密钥”

我可以使用

CustomerFilter
属性来验证令牌、任何帮助或示例存储库。

截至目前,我们将 APIgateway 或 APIM 作为最后的选择,因为它会增加成本。

非常感谢。

amazon-web-services validation .net-core jwt access-token
1个回答
0
投票

更正了使用 OpenIdConnect(众所周知的 Url)验证签名的代码。 并能够识别 iss = 发行者并获得正确的配置并进行令牌验证以继续身份验证和授权

try { var claimsPrincipal = new JwtSecurityTokenHandler().ValidateToken(jwt, validationParameters, out var rawValidatedToken); return (JwtSecurityToken)rawValidatedToken; // Or, you can return the ClaimsPrincipal (which has the JWT properties automatically mapped to .NET claims) } catch (SecurityTokenValidationException) { // The token failed validation! // TODO: Log it or display an error. }

© www.soinside.com 2019 - 2024. All rights reserved.