【发布时间】:2021-05-31 14:03:29
【问题描述】:
假设您正在构建一个评论系统,其中经过身份验证的用户必须发布 cmets。认证协议为Oauth2。
您有一个 API POST /comment 并且您在请求正文中传递了注释。
我的问题:因为用户是经过身份验证的,所以创建评论的用户的身份将被 API 实现知道。您是否还在请求正文中包含用户的 ID?还是只使用 oauth 协议提供的主体?
【问题讨论】:
标签: java rest microservices
假设您正在构建一个评论系统,其中经过身份验证的用户必须发布 cmets。认证协议为Oauth2。
您有一个 API POST /comment 并且您在请求正文中传递了注释。
我的问题:因为用户是经过身份验证的,所以创建评论的用户的身份将被 API 实现知道。您是否还在请求正文中包含用户的 ID?还是只使用 oauth 协议提供的主体?
【问题讨论】:
标签: java rest microservices
您应该使用经过身份验证的用户的身份,在本例中为委托人。因为如果您在正文中也添加用户 ID,任何人都可以使用例如浏览器调试工具和评论来更改它,就像他是另一个用户一样。
如果您使用 OAuth 2.0,则有两个选项,如果您使用不透明令牌,则应调用 OAuth 服务器的用户信息端点以获取给定令牌的用户详细信息。如果您使用的是 jwt 令牌,则用户 ID 应该在 sub 声明中。无论您选择哪种选项,您都应该使用您的身份验证机制提供的用户身份
【讨论】: