承载错误-invalid_token-找不到签名密钥 - c#

我有一个与.Net Core 2.2 API后端接口的Angular 7应用程序。这与Azure Active Directory连接。

在Angular 7方面,它已通过AAD进行了正确的身份验证,并且我获得了有效的JWT,如在jwt.io上进行了验证。

在.Net Core API方面,我创建了一个带有[Authorize]的简单测试API。

当我从Angular调用此方法时,添加Bearer令牌后,我得到了(如Chrome调试工具的“网络”标签中的“标题”所示):

WWW-Authenticate:承载错误=“ invalid_token”,error_description =“ The
找不到签名密钥”

使用HTTP / 1.1 401未经授权。

简单的测试API是:

    [Route("Secure")]
    [Authorize]
    public IActionResult Secure() => Ok("Secure works");

Angular调用代码也很简单:

    let params : any = {
        responseType: 'text',
        headers: new HttpHeaders({
            "Authorization": "Bearer " + token,
            "Content-Type": "application/json"
        })
    }

    this.http
        .get("https://localhost:5001/api/azureauth/secure", params)
        .subscribe(
            data => { },
            error => { console.error(error); }
        );

如果我删除了[Authorize]属性,只是将其作为来自Angular的标准GET请求进行调用,则效果很好。

我的Startup.cs包含:

        services
            .AddAuthentication(AzureADDefaults.AuthenticationScheme)
            .AddAzureADBearer(options => this.Configuration.Bind("AzureAd", options));

所有选项均已在appsettings.json中正确设置(例如ClientId,TenantId等),并且options此处已按预期填充。

参考方案

我的核心API使用不同的服务配置(并且有效:)):

            services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
            .AddJwtBearer(options =>
            {
                Configuration.Bind("JwtBearer", options);

您确定要传递访问令牌而不是id_token吗?令牌中的aud calim是否与您的API所配置的clientid完全相同?您可能想在选项中添加一些事件,以查看接收的内容以及验证失败的位置。

使用Keycloak获取id_token - java

谁知道如何使用Keycloak获取id_token?我一直在Keycloak(Spring,JEE)和邮递员中使用Java。基础工作正常,但我需要id_token,因为有些说法称它们不在access_token中,但存在于id_token中。使用keycloak-core库,我可以获得Keycloak上下文,但是id_token属性始终为null。有想法吗 …

LeetCode题解301.remove-invalid-parentheses

题目地址 https://leetcode.com/problems/remove-invalid-parentheses/description/ 题目描述 Remove the minimum number of invalid parentheses in order to make the input string valid. Return all…

当回复有时是一个对象有时是一个数组时,如何在使用改造时解析JSON回复? - java

我正在使用Retrofit来获取JSON答复。这是我实施的一部分-@GET("/api/report/list") Observable<Bills> listBill(@Query("employee_id") String employeeID); 而条例草案类是-public static class…

改造正在返回一个空的响应主体 - java

我正在尝试使用Retrofit和Gson解析一些JSON。但是,我得到的响应机构是空的。当我尝试从对象中打印信息时,出现NullPointerException。我确保URL正确,并且我也确保POJO也正确。我正在使用jsonschema2pojo来帮助创建POJO类。这是我要解析的JSON{ "?xml": { "@versi…

每个文件合并后添加换行 - python

我有很多类似以下内容的JSON文件:例如。1.json{"name": "one", "description": "testDescription...", "comment": ""} test.json{"name"…