如何为本地Web应用程序定义Microsoft Live OAuth重定向URL?

10

使用OAuth时,ClientID和redirect_url有很强的联系:每个redirect_url需要单独的ClientID。这对于部署在多个域中的本地应用程序是一个问题。

是否有办法从未知域实现OAuth认证?我能想到的唯一替代方法是需要在一个固定的域上使用专用的“认证服务器”作为redirect_url,然后可以执行新的、不受限制的重定向到客户域。

桌面应用程序通过提供虚假的redirect_url并在专用的web框架中托管实时认证窗口来解决此问题,使它们能够侦听重定向请求。即使URL本身无效,这也允许它们从重定向URL中读取授权代码。我认为这在Web浏览器中由于跨域限制是不可能的。

基本上,在本地Web应用程序中支持SkyDrive发布需要使用OAuth。

1个回答

1

RFC 6749 (OAuth 2.0) 规定,授权服务器必须要求公共客户端预先注册 redirect_uri,但对于机密客户端则没有此要求,只要它们不使用隐式授权。根据您是在安装时提供客户端凭据还是系统管理员输入其自己的客户端凭据,您的系统会处于不同的类别。然而,RFC建议始终要求预先注册的redirect_uri,因此您可能会在任何分类中遇到相同的问题。

我认为您唯一可行的解决方案是要求系统管理员在配置系统时提供自己的客户端凭据。如果他们提供自己的客户端凭据,则还需要向授权服务器注册自己的redirect_uri,从而解决了问题。

你不应该实现一个中间身份验证服务器,因为这会打开你的应用程序的安全漏洞。如果用户授权了你系统的一个安装,他们将自动授权所有安装,这将使他们的个人数据可供其他未经授权的组织使用。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接