Sar*_*yan 9 rest web-services oauth owin katana
我使用OWIN OAuth 2来实现我的授权服务器提供程序.现在,我想实现令牌撤销(当我的客户端应用程序想要注销时).
任何人都可以帮助我并告诉如何在OWIN KATANA OAuth中实施令牌撤销2.是否有一些良好的做法?
She*_*0ck 18
OAuth 2.0中涉及两种令牌.一个是访问令牌,另一个是刷新令牌.
对于刷新令牌,我真的建议使用由Taiseer Joudeh编写的ASP.NET Web API 2,Owin和Identity进行基于令牌的身份验证.他提供了有关设置基于令牌的身份验证的分步教程,包括撤消刷新令牌.
对于访问令牌,我使用黑名单来存储已撤销的访问令牌.当用户登出时,我将用户的当前访问令牌添加到黑名单中.如果有新请求,我首先检查其访问令牌是否在黑名单中.如果是,请拒绝该请求,否则让OAuth组件进行验证.
以下是一些实现细节:
我使用缓存作为黑名单,并将缓存项目的到期时间设置为访问令牌的到期时间.缓存项(访问令牌)将在到期后自动从黑名单中删除.(我们不需要在访问令牌到期后将其保留在黑名单中.如果令牌过期,无论它是否在黑名单中,它都无法通过OAuth验证机制).
以下代码显示如果请求的访问令牌位于黑名单中,如何拒绝该请求.
app.UseOAuthBearerAuthentication(new OAuthBearerAuthenticationOptions()
{
Provider = new OAuthBearerAuthenticationProvider()
{
OnRequestToken = context =>
{
if(blackList.contans(context.Token))
{
context.Token = string.Empty;
}
return Task.FromResult<object>(null);
}
}
}
Run Code Online (Sandbox Code Playgroud)
我所做的是如果我在黑名单中找到访问令牌,我将访问令牌设置为空字符串.稍后,当OAuth组件尝试解析令牌时,它会发现令牌为空.当然,空字符串不是有效令牌,因此它将拒绝请求,就像您发送带有无效访问令牌的请求一样.
刷新令牌是 OAuth2 允许撤销授权的方式。微软的OAuth2授权服务器中间件在这方面有所欠缺:
| 归档时间: |
|
| 查看次数: |
10128 次 |
| 最近记录: |