Thinktecture Identity Server:保护Web API(授权最佳方法)

时间:2016-09-27 14:50:47

标签: asp.net-web-api2 identityserver3 thinktecture-ident-server authorize-attribute

使用承载令牌授权保护API时:是否需要验证令牌是从我的身份服务器发出的还是已经在后台发生的,我该怎么做?

在持有人令牌方面,范围会发挥什么作用?

1 个答案:

答案 0 :(得分:3)

简而言之,是的,您需要验证持有人令牌是否由您信任的发行人签发。这意味着要么通过验证它是由受信任的发行人签名,要么对您信任的isser进行API调用,询问它是否确实由您信任的发行人发行。

在实践中:在谈论Katana时,这是通过使用[Authorize]过滤器/属性和Owin中间件的组合来完成的:

选项1

Microsoft的中间件:

app.UseOAuthBearerAuthentication(opts)

https://msdn.microsoft.com/en-us/library/owin.oauthbearerauthenticationextensions.useoauthbearerauthentication(v=vs.113).aspx

https://www.nuget.org/packages/Microsoft.Owin.Security.OAuth

或者,可选地,来自Brock Allen og Dominic Baier的中间件:

选项2

如果使用Microsofts中间件(如果您需要它提供的额外功能),则使用以下构建在顶部的抽象:

app.UseIdentityServerBearerTokenAuthentication(opts)

来源:https://github.com/IdentityServer/IdentityServer3.AccessTokenValidation

NuGet:https://www.nuget.org/packages/IdentityServer3.AccessTokenValidation/

作用域

说到范围& API访问,范围代表您要保护的资源。当客户端请求访问令牌时,它可以要求令牌包含给定范围。然后,您的identityprovider验证确实允许此客户端接收具有此范围的令牌。如果成功,最终结果是允许客户端使用此令牌调用API的令牌。

由于API信任此identityprovider(或令牌提供程序)发出的令牌,所以它所要做的就是

  1. 验证该令牌是由API信任的人发出的
  2. 检查令牌是否包含代表其资源的范围