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

Posted

技术标签:

【中文标题】Swagger UI 文档页面前端存储的凭据在哪里?【英文标题】:Where are the credentials stored in the front-end of a Swagger UI doc page? 【发布时间】:2022-01-24 04:46:05 【问题描述】:

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

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

【问题讨论】:

【参考方案1】:

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

如果 Swagger UI 配置了 persistAuthorization: true,则当前活动的凭据将保存在浏览器 local storage 的 authorized 键中。刷新或重新打开 Swagger UI 页面后,将预先应用保存的凭据。在“授权”对话框中单击“注销”会从本地存储中删除相应的凭据。

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

老板在问这是否安全。我认为在其他 S.O.帖子建议不要在浏览器的本地缓存中存储秘密。你知道这个秘密是否至少被散列了吗?我试图在源代码中查找我的答案,但运气不佳。

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

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

Swagger UI 的认证相关代码是here 和here。 persistAuthorization 配置已添加到 this PR。

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

【讨论】:

好的,答案很好。我问是因为我处于老板询问这是否安全的情况。我认为在其他 S.O.帖子建议不要在浏览器的本地缓存中存储秘密。你知道这个秘密是否至少被散列了吗?我试图在源代码中查找我的答案,但运气不佳。 更新了答案。

以上是关于Swagger UI 文档页面前端存储的凭据在哪里?的主要内容,如果未能解决你的问题,请参考以下文章

thinkphp6+swagger-php配置管理接口文档

Swashbuckle.AspNet.Core:Swagger UI 显示空白页面 - 如何修复?

使用存储的凭据自动登录 PhoneGap Onsen UI 应用程序

告别 swagger-ui ,我选择了这款神器!

告别 swagger-ui ,我选择了这款神器!

SpringBoot整合Swagger-ui快速生成在线API文档