在Web Api中使用承载令牌进行身份验证时,如何生成用户属性?

时间:2014-05-29 17:03:46

标签: asp.net asp.net-web-api oauth-2.0 bearer-token

这方面的文档很少,这意味着我无法在任何地方找到明确的答案。 如果我没弄错的话,在MVC应用程序中使用cookie身份验证时,cookie会包含加密信息,该信息在每次请求时都会被解密并播种到Principal中。 Bearer Tokens是否会发生同样的事情?令牌是否包含进入Principal的所有信息?它是如何在幕后工作的?如果这是一个愚蠢的问题,我很抱歉,但我发现Asp.Net MVC和web api中当前的身份验证/授权实现非常混乱,并且没有很多好的文档。

1 个答案:

答案 0 :(得分:0)

从我的理解,你几乎是正确的。

在验证用户凭据时,扩展OAuthAuthorizationServerProvider类,覆盖GrantResourceOwnerCredentials方法;然后,您可以在其中创建一个ClaimsIdentity实例并将其传递给AuthenticationTicket。

然后,ClaimsIdentity(以及任何已分配的声明和数据)将被加密并作为响应的“access_token”部分的一部分发送。

Microsoft的OWIN身份验证中间件负责管理加密/解密和序列化过程。 对于IIS托管方案,加密使用machine.config中的machineKey。对于自我主持人,OWIN回退到data protection api

在他的博客中,Brock Allen对微软的OWIN认证中间件提供了一些非常好的见解和解释,以及幕后发生的事情。我会阅读herehere了解更多详情