Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 重定向到具有自定义标题的外部站点-AngularJS/OAuth_Javascript_Angularjs_Spring Security_Oauth 2.0 - Fatal编程技术网

Javascript 重定向到具有自定义标题的外部站点-AngularJS/OAuth

Javascript 重定向到具有自定义标题的外部站点-AngularJS/OAuth,javascript,angularjs,spring-security,oauth-2.0,Javascript,Angularjs,Spring Security,Oauth 2.0,使用自定义头重定向到外部站点(OAuth服务器)以验证用户是否合理 例如,在向http://this\u is\u my\u site/login提供凭据后,单击login,并将您重定向到外部地址http://OAuth_Server/oauth/autorize授权您的客户 问题是http://OAuth_Server/oauth/autorize需要与您刚才在http://this\u is\u my\u site/login中输入的凭据相同的凭据 如何使用自定义头重定向到OAuth服务器,

使用自定义头重定向到外部站点(OAuth服务器)以验证用户是否合理

例如,在向http://this\u is\u my\u site/login提供凭据后,单击login,并将您重定向到外部地址
http://OAuth_Server/oauth/autorize
授权您的客户

问题是
http://OAuth_Server/oauth/autorize
需要与您刚才在http://this\u is\u my\u site/login中输入的凭据相同的凭据

如何使用自定义头重定向到OAuth服务器,或者这是一种糟糕的方法

headers: {
  Authorization: "Basic " + btoa('user' + ":" + 'password')
}

我使用AngularJS作为前端,Spring作为后端。

您的问题有两个方面

首先是实现OAuth。基本上,您将客户端重定向到另一端,但重定向具有到站点的反向链接。当客户端在另一个站点上进行身份验证(登录)时,服务器会将客户端重定向回您的站点(使用您的站点在第一次重定向中提供的url),并提供站点令牌(在GET参数中)。使用此令牌,您可以向另一个站点发送请求,并检查用户操作系统是否正常

我简化了一些步骤,但总的来说,就是这样

在您的情况下,即使用户似乎具有相同的凭据,他仍然需要在提供商上进行身份验证(授权您的站点),这一点很重要。没有办法解决这个问题,因为它是故意设计的,这样客户端就不能在您的站点上输入另一个站点的凭据,并且仍然可以访问其他站点的数据

第二,在重定向时将自定义头发送到另一个站点。这是不可能的,主要是因为这是一个历史局限。最初,重定向是通过向具有新URL的客户端发送
Location
头来实现的,客户端通过GET请求新资源。就这么简单。后来AFAIK添加了JavaScript重定向,没有人真正关心头部,因为这无论如何都是不可能的,所以为什么要麻烦呢


然而,这个规则有一个重要的例外——身份验证。您可以在URL中添加用户和密码,如
http://user:password@主机/…
,它们将在Authenticate头中发送。但是,它与OAuth没有任何共同之处,称为HTT基本身份验证。如果服务器支持它,您可以在重定向期间指定它们,但它与OAuth正交。

听起来您在做OAuth错误的事情。您应该只在授权主机上输入凭据嗯,我很难真正理解如何将OAuth2与现有应用程序集成。。。所以你说登录页面应该托管在
http://OAuth_Server
而不是在
http//这是我的网站
网站?看看这个~Wow!现在清楚了。登录(授权)应始终位于UAA服务器中,而不是客户端中。