C# OAuth 2.0如何使用密码授予使授予的身份验证令牌无效
对于以下场景:C# OAuth 2.0如何使用密码授予使授予的身份验证令牌无效,c#,asp.net-mvc,oauth,authorization,dotnetopenauth,C#,Asp.net Mvc,Oauth,Authorization,Dotnetopenauth,对于以下场景: 向资源服务器发出Ajax请求的用户代理(浏览器、用户) 使用DotNetOpenAuth(客户端)的ASP.NET MVC应用程序 OAuth授权服务器 ASP.NET Web API(资源服务器) 用户输入其凭证以登录MVC应用程序。 MVC应用程序使用用户凭据和MVC应用程序的Client.Id+Client.Secret,通过向授权服务器授予密码来发出令牌请求。 MVC应用程序从授权服务器接收OAuth令牌。 令牌被传递回客户端,客户端将令牌存储在LocalStorage中
signar
东西使令牌无效,但是对于获得令牌访问权的恶意用户来说,有足够的时间来做出不好的事情。我认为没有办法立即使代币失效。而且,直到令牌真正过期,资源服务器才知道令牌已失效在注销/更改密码时,我可以从本地存储中删除令牌,并使服务器端的令牌无效。我认为您实际上已经回答了自己的问题! 您不能使服务器端的令牌无效(除非DNOA处理令牌撤销,我认为它不会)。 该令牌是一个承载令牌,因此任何拥有它的人都可以在资源服务器上使用它,直到达到到期时间为止。保持它的短暂性是最好的方法
另外,在使用密码授予时,您应该只使用用户的凭据一次,以获取初始令牌和刷新令牌。然后,您可以将刷新令牌与MVC应用程序中的用户id相关联,并在将来使用刷新令牌来获取新的访问令牌。是的,如果不耦合OAuth服务器和资源服务器,则不可能,否则,您必须在到达资源服务器时检查OAuth服务器上的令牌,以检查是否已被撤销。。。