我现在正在阅读一些关于OAuth的介绍材料,有想法在免费软件中使用它。
我读到了这个:
消费者的秘密永远不能被泄露
向任何人透露。不要包含它
在任何请求中,在任何代码中显示它
样本(包括开源)或
任何方式揭示它。
如果我使用 OAuth 为特定网站编写免费客户端,那么我必须在源代码中包含消费者秘密,否则从源代码制作将使软件无法使用。然而,正如所说,这个秘密不应该与消息来源一起被泄露。
我完全理解安全考虑,但是,如何解决这个困境,并在自由软件中使用 OAuth?
我想过使用外部网站作为身份验证的代理,但这非常复杂。你有更好的想法吗?
Edit:
有些客户喜欢Gwibber也使用OAuth,但我没有检查它的代码。
我不确定我是否遇到了问题,您不能将代码开发为开源代码,从配置文件中检索客户机密,或者将其保留在数据库中的特殊表中吗?这样,代码将不包含客户秘密(因此将作为开源“可共享”),但应用程序仍然可以访问客户秘密。
也许对目标平台有更多的详细信息会有所帮助,就像在某些(我现在正在考虑 tomcat)参数中,例如这个参数可以包含在服务器配置文件中。
如果是 PHP,我知道一个开源项目(Moodle)的案例,它保留了 php (配置文件 http://docs.moodle.org/en/Configuration_file)文件包含所有重要配置的定义,并从所有页面引用该文件以获取定义。管理员有责任使用该安装特有的值来完成此文件的内容。事实上,如果应用程序发现文件丢失(通常是在第一次访问站点时),它将重定向到一个向导,管理员可以在其中以更用户友好的方式填充内容。在这种情况下,客户秘密将是这些配置之一,因此将出现在“生产”代码中,但不会出现在代码的“可分发”形式中。
我个人喜欢将该值存储在数据库中为其设计的表中以及可能的其他参数的想法,因为不需要更改代码。如果值不存在,也许这里也可以显示安装向导。
这能解决您的问题吗?
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)