这方面的文档很少,这意味着我无法在任何地方找到明确的答案。 如果我没弄错的话,在MVC应用程序中使用cookie身份验证时,cookie会包含加密信息,该信息在每次请求时都会被解密并播种到Principal中。 Bearer Tokens是否会发生同样的事情?令牌是否包含进入Principal的所有信息?它是如何在幕后工作的?如果这是一个愚蠢的问题,我很抱歉,但我发现Asp.Net MVC和web api中当前的身份验证/授权实现非常混乱,并且没有很多好的文档。
答案 0 :(得分:0)
从我的理解,你几乎是正确的。
在验证用户凭据时,扩展OAuthAuthorizationServerProvider类,覆盖GrantResourceOwnerCredentials方法;然后,您可以在其中创建一个ClaimsIdentity实例并将其传递给AuthenticationTicket。
然后,ClaimsIdentity(以及任何已分配的声明和数据)将被加密并作为响应的“access_token”部分的一部分发送。
Microsoft的OWIN身份验证中间件负责管理加密/解密和序列化过程。 对于IIS托管方案,加密使用machine.config中的machineKey。对于自我主持人,OWIN回退到data protection api
在他的博客中,Brock Allen对微软的OWIN认证中间件提供了一些非常好的见解和解释,以及幕后发生的事情。我会阅读here和here了解更多详情