如何使用auth0 jwt

时间:2016-07-13 10:15:28

标签: rest asp.net-core jwt auth0

我有一个angular2前端,它使用Auth0进行身份验证,后端使用.net核心应用程序。所有这些都在强制执行安全的API调用。

在后端识别经过身份验证的用户的最佳方法是什么?我可以想到这样做的一种相当笨拙的方法是公开一个' setUserToken' api调用允许我将用户ID连接到以下任一项:

  • 令牌var bearerToken = Request.Headers["Authorization"].ToString()

  • 社交ID var socialId = User.Claims.Where(c => c.Type == "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier").First().Value

这样,通过后续的API调用,我可以简单地findUserByToken()findUserBySocialProviderOpenId()

我确定我错过了一个更明显的解决方案。任何指导都将不胜感激。

1 个答案:

答案 0 :(得分:7)

JWT的sub声明始终由Auth0生成,并且将包含用户的标识符,与用于登录的身份提供程序无关。

https://self-issued.info/docs/draft-ietf-oauth-json-web-token.html#rfc.section.4.1.2

  

子(主题)声明确定了作为JWT主题的委托人。 JWT中的声明通常是关于该主题的声明。主题值必须在发行者的上下文中作为本地唯一的范围,或者是全局唯一的。该权利要求的处理通常是特定于应用的。子值是包含StringOrURI值的区分大小写的字符串。使用此声明是可选的。

在大多数情况下,您的后端API应该只是Auth0访问令牌的使用者,而不需要公开与身份验证相关的任何端点。