Raj*_*Raj 3 oauth-2.0 asp.net-web-api
我有一个Web API和AngularJS客户端.API使用visual studio提供的默认授权提供程序,使用grant_type'password'在令牌请求上生成令牌.
AngularJS客户端能够通过使用凭证调用令牌端点从Web API获取承载令牌,然后传递此令牌以在API中执行授权请求.
当AngularJS在任何授权的API调用上发送令牌时,Web API如何验证令牌?令牌存储在哪里?
我检查了SQL服务器中的身份表,我找不到任何字段来存储此令牌信息.我检查了配置文件,它也没有存储在那里.能帮我理解这个概念吗?
拉吉,
默认情况下,服务器不存储令牌.只有您的客户端拥有它,并通过授权标头将其发送到服务器.
如果您使用Visual Studio提供的默认模板,则在该Startup ConfigureAuth方法IAppBuilder中调用以下扩展名:app.UseOAuthBearerTokens(OAuthOptions).
来自Microsoft.AspNet.Identity.Owin包的这个扩展使您可以轻松生成和使用令牌,但由于它是一体化的,因此令人困惑.在幕后,它使用了两个Owin中间件:
PipelineStage.Authenticate,读取授权标头,检查令牌是否有效并验证用户.为了回答您的问题,WebAPI能够验证令牌OAuthBearerAuthenticationMiddleware,这将确保通过授权头发送的令牌有效且未过期.并且令牌仅由您的客户端存储,如果客户端松开它,则必须请求新的令牌.
我劝你得到的OAuth协议深,而是采用了扩展UseOAuthBearerTokens,看看UseOAuthAuthorizationServer和UseOAuthBearerAuthentication,它会帮助你更好地理解它是如何工作的.