Auth0+Angular+Spring环境下JWT用户标识与自定义用户对象问题
场景
我正在测试Auth0,对返回的数据存在困惑,这可能源于此前一直使用session,对JWT存在基础性误解。返回的JWT声明数据如下:
{ "sub": "auth0|redacted", "aud": ["redacted", "redacted"], "azp": "redacted", "scope": "openid profile email", "iss": "redacted", "exp": "2022-07-17T23:44:01Z", "iat": "2022-07-16T23:44:01Z" }
我了解sub是认证源及用户ID,也持有Bearer Token,可调用Auth0用户信息API获取完整用户数据,但不想仅为获取邮箱就调用该API。
核心问题
- 我需要一个可与业务对象关联的用户对象(如用户保存表单时关联创建者)。由于用户可通过Auth0或Google等多源认证,无法直接使用JWT中的sub作为唯一标识,需考虑不同登录方式的场景。
- 是否必须调用API获取邮箱,再通过邮箱查询数据库?仅在首次使用某认证方式时调用API获取邮箱并保存sub的方式显得繁琐,怀疑当前思路有误。
- 是否存在邮箱之外的其他唯一标识?
- 我的思路是否完全错误?我需要在应用内构建自定义User对象,以实现审计追踪或获取用户专属文档,使用Auth0的JWT时是否有更优方案?
参考仓库
- Angular基础认证仓库
- Spring MVC基础授权仓库
内容的提问来源于stack exchange,提问作者User9123
相关产品推荐
相关产品推荐

