0

我正在尝试让身份服务器的 Asp.Net 身份示例在我的 Web Api 项目中工作,而初学者我正在尝试使用不记名令牌获取令牌并向 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" }
        });

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

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

我在提琴手请求中提出的当然是:

Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6ImE...

我做错了什么吗?

4

2 回答 2

3

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

于 2015-10-03T20:41:43.817 回答
0

给你,我已经修改了你的样本,所以它对你有用:

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

    RequiredScopes = new[] { "read", "write" } // scopes
});
于 2017-11-20T16:30:01.487 回答