Rest 如何使用auth0 jwt识别用户
我有一个angular2前端,它使用Auth0进行身份验证,后端有一个.net核心应用程序。所有这些都是为了强制执行安全的API调用 在后端识别经过身份验证的用户的最佳方法是什么?我能想到的一种相当笨拙的方法是公开一个“setUserToken”api调用,该调用允许我将用户ID连接到以下任一项:Rest 如何使用auth0 jwt识别用户,rest,asp.net-core,jwt,auth0,Rest,Asp.net Core,Jwt,Auth0,我有一个angular2前端,它使用Auth0进行身份验证,后端有一个.net核心应用程序。所有这些都是为了强制执行安全的API调用 在后端识别经过身份验证的用户的最佳方法是什么?我能想到的一种相当笨拙的方法是公开一个“setUserToken”api调用,该调用允许我将用户ID连接到以下任一项: 令牌var bearerToken=Request.Headers[“Authorization”].ToString() 社交IDvar socialId=User.Claims.Where(c=
- 令牌
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()值
findUserByToken()
或findUserBySocialProviderOpenId()
我肯定我错过了一个更明显的解决这个问题的方法。非常感谢提供任何指导。JWT的
子声明始终由Auth0生成,并将包含用户标识符,与用于登录的身份提供商无关
子(主体)索赔确定了作为联合工作组主体的委托人。JWT中的声明通常是关于主题的声明。主题值的范围必须是发行人上下文中本地唯一的或全局唯一的。本索赔的处理通常是针对具体应用的。子值是一个区分大小写的字符串,包含StringOrURI值。此声明的使用是可选的
在大多数情况下,您的后端API应该只是Auth0访问令牌的使用者,不需要公开任何与身份验证相关的端点。感谢您的回复Rodrigo:)事实上,我的子声明确实告诉了我身份提供者。所以(在上面的例子中)socialId==google-oauth2 |[idNumber]
虽然,我的主要问题是如何在我的API中识别用户。我不确定我是否遵循了-API收到了sub
声明,因此它允许您识别用户是谁。或者你是在问一个更具体的实现问题吗?这正是我要找的:)所以在我的例子中,子声明是google id。你能把子声明存储在数据库中,针对特定用户吗?我最近来自Java EE背景,所以如果.NET有我所缺少的一些聪明的替代方案,我不是100%的。因为JWT允许无状态身份验证(您可以信任令牌中的任何内容),所以完全不需要存储ID或数据库。如果您确实需要在数据库中存储有关用户的更多信息,那么可以使用子声明作为用户的唯一ID。好的。这差不多就结束了。谢谢你抽出时间。