OAuth2隐式授权与Ajax

3
我正在使用Angular在Javascript应用程序中实现OAuth的implicit授权类型。我想使用AJAX请求来请求令牌。当我向我的OAuth服务器发出请求时,它会响应一个302和一个location头。根据规范,位置是我的配置重定向URL和包含访问令牌的散列片段。
我的问题是,如果是ajax请求,我没有办法读取散列片段,因为XmlHttpRequest自动遵循位置标头。我似乎无法获得有关初始响应(状态为302,具有位置标头)的任何信息。如果有一种方式可以拦截该响应并读取位置标头,那么我就能完成操作了。
我希望请求令牌在后台进行,用户无需知道正在发生什么。(也就是说,浏览器的URL不会跳来跳去。)我还应该提到,我正在一个SSO可用的环境中工作,并且用户很可能已经通过SSO进行了身份验证。只要我的OAuth服务器检测到SSO cookie,它就会知道用户之前已经经过身份验证,并为该应用程序发放令牌,而无需重定向到登录页面。
是否有任何方法可以读取第一个响应的位置标头或重定向到的URL?看起来xhr本身采取了很多措施来防止这种情况,所以我也想知道这背后的原因是什么?

似乎你并没有提出一个实际的问题。 - mikefrey
1个回答

0

oauth Implicit Grant通常会打开服务登录窗口,以便用户可以接受服务集成器,然后提供他们的登录凭据。使用JavaScript,您可以通过实现类似以下代码的代码来读取哈希:

var browserRef = window.open(add your URL here, '_blank','location=yes,clearsessioncache=yes,clearcache=yes');
browserRef.addEventListener ('loadstart', function(event) { add code to read the hash)}

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