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
});
我正在尝试获取在我的 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
});