在异常端口上使用端口转发的OAuth重定向URI

时间:2014-08-20 23:55:55

标签: oauth-2.0 url-redirection portforwarding

我在端口4443上运行HTTPS服务器并使用端口转发来发送443 - > 4443所以在浏览器中你无法告诉

在我的OAuth设置中,当我使用https://www.domain.com:4443/callback时,我收到了回复,但在弹出窗口中,它无法访问父级,我收到此Chrome错误

Blocked a frame with origin "https://www.domain.com:4443" from accessing a 
frame with origin "https://www.domain.com". Protocols, domains, and ports must match.

当我将OAuth中的网址更改为443时,我得到了心爱的

`Invalid redirect_uri. This value must match a URL registered with the API Key.`

我能想到的唯一方法是通过javascript检查端口是否为url,如果是,则重定向到没有端口的url。

还有更优雅的解决方案吗?

1 个答案:

答案 0 :(得分:0)

由于没有人提出优雅的解决方案,我认为我的Javascript重定向答案。

我所做的是,在接受重定向的窗口内,其URL看起来像https://www.domain.com:4443/callback?aribtrary_data=1231252...etc...我将回调代码包装在try语句中。如果失败,我将当前页面重定向到相同的URL减去端口号。

这是我的Jade弹出窗口解决方案,试图在完成时调用父窗口。

doctype html
html
    head
        title Authentication Popup
        script.
            var service = !{JSON.stringify(service)},
                callback = 'on' + service.name + 'Auth';

            window.onload = function () {
                try {
                    window.opener[callback](service.error, service);
                    window.close();
                } catch (e) {
                    window.location = window.location.href.replace(/(\.com)(:\d{3,4})?/, '$1');
                }
            }
    body
        | Closing in 1...