为了账号安全,请及时绑定邮箱和手机立即绑定

Web Api OWIN - 如何在每个请求上验证令牌

Web Api OWIN - 如何在每个请求上验证令牌

C#
慕丝7291255 2021-10-31 19:12:30
我有两个应用程序基于 ASP.NET MVC 的客户端应用程序构建基于 Web API + OWIN 的身份验证服务器已计划身份验证如下对于用户登录,客户端应用程序将使用登录凭据向身份验证服务器发出请求。身份验证服务器将生成一个令牌并将其发送回客户端应用程序。客户端应用程序将该令牌存储在本地存储中。对于每个后续请求,客户端应用程序将附加令牌保存在请求标头中的本地存储中。现在,在 CLEINT 应用程序的服务器端,我需要验证每个请求附带的令牌没有被调和。请建议我如何在每个请求中验证令牌,因为我不知道 OWIN 用于生成令牌的密钥。在客户端应用程序上编写代码来验证令牌是正确的,还是应该在身份验证服务器上。我计划将所有用户管理代码(例如注册用户、更改密码)转移到身份验证服务器,以便我们可以将其重新用于不同的客户端应用程序 - 这是正确的设计实践吗?到目前为止,我已经编写了下面的代码来创建一个 POC。
查看完整描述

3 回答

?
一只名叫tom的猫

TA贡献1906条经验 获得超3个赞

请建议我如何在每个请求中验证令牌,因为我不知道 OWIN 用于生成令牌的密钥。


您当前的设置(如果您已将其添加app.UseOAuthBearerAuthentication()到 owin 管道)将从为您传递的每个请求中传递的不记名令牌对用户进行身份验证。然后可以通过 找到当前用户HttpContext.Current.User。


Authorize然后使用该属性决定在某些端点上授权哪些用户。这是一个允许具有“user”角色的用户访问的示例


[Authorize(Roles="user")]

public class ValuesController : ApiController

{

}

在客户端应用程序上编写代码来验证令牌是正确的,还是应该在身份验证服务器上。


不,您不会在客户端验证令牌,如果您的用户凭据错误,您根本不会获得令牌。这就是你需要知道的全部。 而且,为什么要在客户端验证令牌?


我计划将所有用户管理代码(例如注册用户、更改密码)转移到身份验证服务器,以便我们可以将其重新用于不同的客户端应用程序 - 这是正确的设计实践吗?


重用令牌提供程序很常见。为什么要为每个应用程序发明轮子?构建一个伟大的,或使用第三方,并在您的应用程序中重用它。


查看完整回答
反对 回复 2021-10-31
  • 3 回答
  • 0 关注
  • 139 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信