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 文档页面前端存储的凭据在哪里?的主要内容,如果未能解决你的问题,请参考以下文章
Swashbuckle.AspNet.Core:Swagger UI 显示空白页面 - 如何修复?