JAX-RS - 在 RESTful 网络服务中进行身份验证和获取用户数据
JAX-RS - Authentication and getting user data in RESTful web services
我是 RESTful Web 服务的新手,我正在尝试使用 JAX-RS 设计我的第一个安全 Web 服务。但是我有这个疑问。
假设我有一个 Messenger API,其中有一个“/posts”Web 服务,它会为调用它的用户提供所有帖子。所以我设计了一个基本的 auth 过滤器来进行身份验证,如果用户有效,它将请求传递给 /posts 服务,该服务为用户提供帖子列表。现在的问题是我的数据库中的用户有一个未向用户公开的用户 ID。在 /posts 服务中,我需要 userId 来获取请求用户的帖子。所以我的过滤器进行身份验证并获取登录用户的 userId。
我的问题是如何将此 userId 传递给 /posts 网络服务?
我现在的做法是在过滤器中添加这个userId作为请求头信息,然后传递给/posts服务。
但我很困惑这是否是正确的做法,还是应该以其他方式优雅地处理这种情况?
请帮助我了解最好的方法。
听起来您正在考虑创建自己的安全性,因为已经建立了有据可查的标准。我过去曾使用 OAuth 和 JWT 令牌来保护休息端点。根据您的具体要求,您可以使用基本身份验证。
在安全方面,您很少能比专家做得更好,因此如果您能遵循标准,您可能应该这样做。作为下一个长期发展的人的额外好处是拥有所有文档和支持。
更新:
仅在请求中包含用户 ID 是不够的。任何知道其他人用户 ID 的人都可以伪装成那个人,然后 post 作为另一个用户发送到端点。
"My question is how to pass this userId to the /posts web service ?"
会话可用于存储内部用户 ID。如果您已经让他们通过会话登录,您应该能够从会话中提取用户 ID。如果您要使用 JWT(它是无状态的),您可以提取存储在令牌中的任何信息来完成同样的事情。
我是 RESTful Web 服务的新手,我正在尝试使用 JAX-RS 设计我的第一个安全 Web 服务。但是我有这个疑问。
假设我有一个 Messenger API,其中有一个“/posts”Web 服务,它会为调用它的用户提供所有帖子。所以我设计了一个基本的 auth 过滤器来进行身份验证,如果用户有效,它将请求传递给 /posts 服务,该服务为用户提供帖子列表。现在的问题是我的数据库中的用户有一个未向用户公开的用户 ID。在 /posts 服务中,我需要 userId 来获取请求用户的帖子。所以我的过滤器进行身份验证并获取登录用户的 userId。
我的问题是如何将此 userId 传递给 /posts 网络服务?
我现在的做法是在过滤器中添加这个userId作为请求头信息,然后传递给/posts服务。
但我很困惑这是否是正确的做法,还是应该以其他方式优雅地处理这种情况?
请帮助我了解最好的方法。
听起来您正在考虑创建自己的安全性,因为已经建立了有据可查的标准。我过去曾使用 OAuth 和 JWT 令牌来保护休息端点。根据您的具体要求,您可以使用基本身份验证。
在安全方面,您很少能比专家做得更好,因此如果您能遵循标准,您可能应该这样做。作为下一个长期发展的人的额外好处是拥有所有文档和支持。
更新:
仅在请求中包含用户 ID 是不够的。任何知道其他人用户 ID 的人都可以伪装成那个人,然后 post 作为另一个用户发送到端点。
"My question is how to pass this userId to the /posts web service ?"
会话可用于存储内部用户 ID。如果您已经让他们通过会话登录,您应该能够从会话中提取用户 ID。如果您要使用 JWT(它是无状态的),您可以提取存储在令牌中的任何信息来完成同样的事情。