Thinktecture Identity Server:保护 Web API(授权最佳方法)
Thinktecture Identity Server: Securing Web APIs (Authorization Best Approach)
使用不记名令牌保护 API 时 authorization:Is 需要验证令牌是从我的身份服务器发出的还是已经在后台发生的,我该怎么做?
在不记名令牌方面,作用域扮演什么角色?
简而言之,是的,您需要验证不记名令牌是由您信任的发行人发行的。这意味着要么通过验证它是由受信任的发行人签署的,要么向您信任的发行人发出 API 电话,询问它是否确实是由您信任的发行人发行的。
实际上:在谈论 Katana 时,这是通过结合使用 [Authorize]
filters/attributes 和 Owin 中间件来完成的:
选项 1
来自微软的中间件:
app.UseOAuthBearerAuthentication(opts)
https://www.nuget.org/packages/Microsoft.Owin.Security.OAuth
或者,可选地,来自 Brock Allen 和 Dominic Baier 的中间件:
选项 2
如果 Microsoft 的中间件(如果您需要它提供的额外功能),则使用以下构建于其之上的抽象:
app.UseIdentityServerBearerTokenAuthentication(opts)
来源:https://github.com/IdentityServer/IdentityServer3.AccessTokenValidation
NuGet:https://www.nuget.org/packages/IdentityServer3.AccessTokenValidation/
范围
当谈到范围和API 访问时,范围代表您要保护的资源。当客户端请求访问令牌时,它可以请求包含给定范围的令牌。然后,您的身份提供者会验证此客户端确实被允许接收具有此范围的令牌。如果成功,最终结果是一个令牌,允许客户端使用此令牌调用 API。
由于 API 信任此身份提供者(或令牌提供者)颁发的令牌,因此它所要做的就是
- 验证令牌是由 API 信任
的人颁发的
- 检查令牌是否包含代表其资源的范围
使用不记名令牌保护 API 时 authorization:Is 需要验证令牌是从我的身份服务器发出的还是已经在后台发生的,我该怎么做?
在不记名令牌方面,作用域扮演什么角色?
简而言之,是的,您需要验证不记名令牌是由您信任的发行人发行的。这意味着要么通过验证它是由受信任的发行人签署的,要么向您信任的发行人发出 API 电话,询问它是否确实是由您信任的发行人发行的。
实际上:在谈论 Katana 时,这是通过结合使用 [Authorize]
filters/attributes 和 Owin 中间件来完成的:
选项 1
来自微软的中间件:
app.UseOAuthBearerAuthentication(opts)
https://www.nuget.org/packages/Microsoft.Owin.Security.OAuth
或者,可选地,来自 Brock Allen 和 Dominic Baier 的中间件:
选项 2
如果 Microsoft 的中间件(如果您需要它提供的额外功能),则使用以下构建于其之上的抽象:
app.UseIdentityServerBearerTokenAuthentication(opts)
来源:https://github.com/IdentityServer/IdentityServer3.AccessTokenValidation
NuGet:https://www.nuget.org/packages/IdentityServer3.AccessTokenValidation/
范围
当谈到范围和API 访问时,范围代表您要保护的资源。当客户端请求访问令牌时,它可以请求包含给定范围的令牌。然后,您的身份提供者会验证此客户端确实被允许接收具有此范围的令牌。如果成功,最终结果是一个令牌,允许客户端使用此令牌调用 API。
由于 API 信任此身份提供者(或令牌提供者)颁发的令牌,因此它所要做的就是
- 验证令牌是由 API 信任 的人颁发的
- 检查令牌是否包含代表其资源的范围