2011-01-06 52 views
2

使用OAuth我现在读一些介绍材料了解OAuth,具有想法的自由软件使用它。在自由/开源软件

和我读到这样的:

消费者秘密绝不能 透露给任何人。不要将其包含在任何请求 ,显示它在任何代码 样本(包括开源),或在 任何方式透露它。

如果我正在为使用OAuth的特定网站编写一个免费的客户端,那么我必须在源代码中包含消费者密码,否则从源代码制作会使该软件无法使用。然而,正如所说的,秘密不应该与来源一起释放。

我完全了解安全方面的考虑,但是,我怎么能解决这一难题,并在自由软件使用OAuth?

我想用一个外部网站进行身份验证的代理,但这是非常复杂的。你有更好的想法吗?

编辑:
有些客户喜欢Gwibber还使用OAuth,但我没有检查它的代码。

回答

0

如果您的服务提供商是一个Web应用程序,服务器需要用户注册页面,提供消费者secret作为用户注册自己的消费。这与Twitter应用程序经历的过程相同。尝试在那里注册并查看他们的工作流程,即可完成所有步骤。

如果您的软件是点对点的,则每个应用程序需要既是服务提供商又是的消费者。下面的Jira和Confluence使用案例概述了该实例。

在我的意见之一,我提到https://twitter.com/apps/new作为其中的Twitter应用程序开发商产生消费者的秘密地点。你如何制作这样一个页面取决于系统架构。如果所有消费者都会与一台服务器通话,则该服务器必须有一个页面,如https://twitter.com/apps/new。如果有多个服务器(即客户端联盟),则每个联合需要一个服务器与该页面。

又如要考虑的是Atlassian的应用程序如何使用OAuth。他们是点对点的。建立吉拉和汇合交谈彼此仍然有设置页面中的每个应用,但它远不一样复杂https://twitter.com/apps/new。这两款应用程序都是消费者和服务提供商。在访问每个应用程序的设置允许该应用进行设置作为服务提供者与其他应用程序的单向信任,由于消费。要建立双向信任关系,用户必须访问这两个应用程序的服务提供商设置页面,并告知其他应用程序的URL。

+0

这意味着即使桌面应用程序将需要一个Web服务器? – 2011-01-06 15:54:36

+0

客户机连接到的计算机上需要有一个Web服务器,但不是每个客户机上都有。 – 2011-01-06 15:57:45

0

我不知道我得到的问题,你能不能开发的代码作为开源从配置文件检索客户秘密,也许留在一个特殊的数据库中的表?这样代码将不包含客户机密(并且因此将作为开放源代码“共享”),但客户机密仍然可供应用程序访问。

也许具有目标平台上的一些细节会有所帮助,因为在一些(我想Tomcat的现在)参数,比如这一个可以包含在服务器配置文件。

如果是PHP,我知道一个开源项目(Moodle)的案例,它保留一个包含所有重要配置定义的php文件(config.php),并从所有页面引用此文件以获取定义。管理员有责任使用特定于该安装的值来完成此文件的内容。事实上,如果应用程序可以看到该文件丢失(通常在第一次访问该网站),它会重定向到一个向导,管理员可以在一个更加用户友好的方式填写内容。在这种情况下,客户机密将是这些配置之一,因此将存在于“生产”代码中,而不是以“可分发”形式存在。

我个人比较喜欢在表中存储为它设计的数据库中的该值和其他可能的参数作为代码的想法不需要被改变。如果这些值不存在,也许可以在这里介绍安装向导。

这是否解决您的问题?