凭据存储在 Swagger UI 文档页面的前端在哪里?

Where are the credentials stored in the front-end of a Swagger UI doc page?

我一直在制作一些只有基本身份验证的端点。自动生成的 Swagger UI 看起来不错,用户可以在单击绿色的“授权”按钮后输入凭据在浏览器中使用它。

这些凭据存储在前端的何处以及如何存储?

默认情况下,这些凭据存储在浏览器内存中,并在刷新或关闭 Swagger UI 页面时被丢弃。


如果 Swagger UI 配置为 persistAuthorization: true, the currently active credentials are saved in the authorized key in the browser's local storage。刷新或重新打开 Swagger UI 页面后,将预先应用保存的凭据。单击授权对话框中的“注销”将从本地存储中删除相应的凭据。

请注意,当使用隐身/隐私浏览时,隐私标签的本地存储会在最后一个隐私标签关闭时被清除。

The boss is asking whether or not this is secure. I think in other S.O. posts it recommends that storing secrets in the browser's local cache shouldn't be done. Do you know if the secret is at least hashed? I was trying to look in the source code for my answers but not having much luck.

如果您的意思是 persistAuthorization: true,我个人不会在生产中使用它。对我来说,这个配置看起来更像是 dev/test 环境的东西。

我不知道比较本地存储的安全性如何,例如cookie 或浏览器的“保存密码”功能。如果您发现有用的资源,请发表评论。

Swagger UI的认证相关代码是here and here. The persistAuthorization config was added in this PR.

保存的凭据未经过哈希处理或编码,可能是因为 1) Swagger UI 代码仅在客户端运行,客户端 encoding/decoding 的秘密没有多大意义; 2) 它需要原始(未修改的)凭据来“试用”请求。