Thinktecture Identity Server 3 Asp.Net Identity Sample,不断得到 401 授权被拒绝

Thinktecture Identity Server 3 Asp.Net Identity Sample, constantly getting 401 authorization denied

我正在尝试获取在我的 Web Api 项目中工作的 Identity Server 的 Asp.Net Identity Sample,作为一个初学者,我正在尝试使用以下方法获取令牌并向 API 发送请求不记名令牌。

所以使用 fiddler,我可以向 https://localhost:44333/core/connect/token 发送一个包含以下内容的请求:client_id=roclient&client_secret=secret&grant_type=password&username=bob&password=mypass&scope=read write offline_access 它工作正常,我得到了访问令牌和刷新令牌。

然后我的解决方案中有一个 Web Api 项目,其中包含使用不记名令牌的代码:

app.UseIdentityServerBearerTokenAuthentication(new IdentityServerBearerTokenAuthenticationOptions
        {
            Authority = "https://localhost:44333",
            ValidationMode = ValidationMode.ValidationEndpoint,

            RequiredScopes = new[] { "api1" }
        });

和一个测试控制器,其中 api 使用 [Authorize] 装饰器进行保护。

正如我所说,获取令牌工作正常,但是当我使用 fiddler 将请求发送到 api 时,我总是得到“401 授权被拒绝...”的东西。

我在fiddler request里写的当然是:

Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6ImE...

我做错了什么吗?

在您的令牌请求中,您请求的是读写范围。您的 api 检查 api1 范围。这行不通。

给你,我已经修改了你的示例,所以它适合你:

app.UseIdentityServerBearerTokenAuthentication(new 
IdentityServerBearerTokenAuthenticationOptions
{
    Authority = "https://localhost:44333",
    ValidationMode = ValidationMode.ValidationEndpoint,

    RequiredScopes = new[] { "read", "write" } // scopes
});