将jwt(json web令牌)作为GET请求的查询参数放入url是否安全?
我正在使用 FastAPIRedirectResponse并尝试将用户从一个应用程序(域)重定向到另一个应用程序(域),并在 ; 中设置一些responsecookie 然而,cookie 总是被删除/不被传输。如果我尝试添加一些标头,我添加到的所有标头RedirectResponse也不会传输。
@router.post("/callback")
async def sso_callback(request: Request):
jwt_token = generate_token(request)
redirect_response = RedirectResponse(url="http://192.168.10.1/app/callback",
status_code=303)
redirect_response.set_cookie(key="accessToken", value=jwt_token, httponly=True)
redirect_response.headers["Authorization"] = str(jwt_token)
return redirect_response
Run Code Online (Sandbox Code Playgroud)
我该如何解决这个问题?先谢谢您的帮助。
我有一个存储在 Redis 中的令牌 (JWT) 后备列表,并希望让我网站的用户能够以 RESTful 方式将他们的令牌列入黑名单。
我可以:
/sessions/<token>使用 DELETE 方法构建路由/sessions/使用 DELETE 方法和请求正文中发送的令牌构建路由。第一个解决方案很简单,但令牌存储在服务器的日志和用户浏览器的历史记录中。
第二种解决方案似乎更好,但我不确定发送带有正文的 DELETE 请求是否违反了 HTTP RFC 的幂等性原则。
在这种情况下,最佳做法是什么?
我正在尝试生成指向 API 网关(使用 IAM 身份验证)的预签名链接,因此客户端可以访问我在此 API 网关后面的 Lambda 函数之一,而无需对请求进行身份验证。这主要是为了方便客户端,因此它可能会透明地使用响应中的一些链接,无论它们指向同一个经过身份验证的 API 网关、某个 S3 存储桶还是 Internet 中的任意 URL。
为此,我使用查询参数制作 API 签名 v4(请参阅文档和示例)
因此,如果我尝试签署以下针对us-west-2区域和execute-api服务范围的链接:
https://example.com/some/path?some=params
Run Code Online (Sandbox Code Playgroud)
我将得到以下结果(使用 Node.jsaws4库,但在这里无关紧要):
https://example.com/some/path?some=params&
X-Amz-Security-Token=<Session Token Removed>
X-Amz-Date=20210330T180303Z&
X-Amz-Algorithm=AWS4-HMAC-SHA256&
X-Amz-Credential=<Access Key Removed>%2F20210330%2Fus-west-2%2Fexecute-api%2Faws4_request&
X-Amz-SignedHeaders=host&
X-Amz-Signature=884f132ad6f0c7a850e6b1d22b5fed169c13e2189b6e0d0d568d11f967f4a8bd
Run Code Online (Sandbox Code Playgroud)
它有效!但只有在一代后的前 5 分钟......
五分钟过去后,我将收到以下错误响应:
https://example.com/some/path?some=params
Run Code Online (Sandbox Code Playgroud)
有关更多详细信息,请参阅对此问题的回复。
我尝试X-Amz-Expires使用各种值(小于和大于 300 秒)添加文档中提到的查询参数,但没有运气:行为不会改变。
对于由 IAM 实例凭证生成的链接,我至少需要几个小时,最多需要6 个小时,因为链接正在由另一个 Lambda 函数签名。
有没有办法增加 API Gateway 访问的预签名链接有效期?