使用OAuth,ClientID和redirect_url具有强大的连接:每个redirect_url都需要一个单独的ClientID。对于在多个域中具有多个部署的内部部署应用程序而言,这是一个问题。
有没有办法从未知域实施OAuth身份验证?我可以提出的唯一替代方案是在固定域中需要专用的“身份验证服务器”,可以将其用作redirect_url,然后可以执行新的,不受限制的重定向到客户域。
桌面应用程序通过提供虚拟redirect_url然后在专用Web框架中托管实时身份验证窗口来解决此问题,该框架允许他们监听重定向请求。这允许他们从重定向URL读取授权代码,即使URL本身无效。我认为由于跨域限制,这在Web浏览器中是不可能的。
在内部部署的Web应用程序中支持SkyDrive发布本质上需要OAuth。
答案 0 :(得分:1)
RFC 6749(OAuth 2.0)声明授权服务器必须要求{irect重定向'Public Clients,而不是Confidential Clients,只要他们不使用隐式格兰特。根据您是否在安装时提供客户端凭据,或者系统管理员输入他们自己的客户端凭据,您的系统最终会分为不同的类别。但是,RFC建议始终要求预先注册的redirect_uri,因此您很可能在分类时遇到同样的问题。
我认为唯一可行的解决方案是要求系统的系统管理员在配置系统时提供自己的客户端凭据。如果他们提供自己的客户端凭据,他们还需要在授权服务器上注册自己的redirect_uri,从而解决问题。
您应不实施中间身份验证服务器,因为这会打开应用程序的安全性。如果用户授权安装一个系统,他们将自动授权所有安装,这些安装又可以将其个人数据提供给其他组织,而不是他们授权的组织。