【问题标题】:Can my oauth2 callback page be the same html page? and how do I get the token?我的 oauth2 回调页面可以是同一个 html 页面吗?以及如何获得令牌?
【发布时间】:2014-07-13 08:29:06
【问题描述】:

首先,我使用的是静态 html 和 javascript 以及 C# Web API。 所以我在我的 html 文件中有一个调用 oauth2 服务器的链接,比如 index.html 现在可以将回调页面设置为index.html

它似乎有效,它被发送到 index.html?code=125f0...

这样可以吗,还是我需要一个单独的回调页面。是代码,是令牌吗?

现在我应该如何使用它?javascript 似乎没有在回调中受到打击。 编辑,实际上,javascript 似乎在通话中被击中,但我没有得到任何未定义的内容:

    $(function () {
        var params = {},
            queryString = location.hash.substring(1),
            regex = /(^&=]+)=([^&*])/g,
            m;
        while (m = regex.exec(queryString)) {
            params[decodeURIComponent(m[1])] = decodeURIComponent(m[2]);
        }
        if (params.error) {
            if (params.error == "access_denied") {
                sAccessToken = "access_denied";
                //alert(sAccessToken);
            }
        } else {
            sAccessToken = params.code;
            alert(sAccessToken);
        }
    });

另外,我的回调页面可以是 C# web api 调用吗?并以这种方式发送令牌。我猜不,因为你永远不会知道用户代理正在发送它,并且除非你以某种方式传递了一个 id 并使用了 signalR,否则无法回复?用 javascript 获取它并将令牌发送到 web api 似乎更好。但是如果有令牌,web api可以调用资源吗?

对不起,我还在学习中

【问题讨论】:

    标签: c# javascript jquery html oauth-2.0


    【解决方案1】:

    OAuth2 有各种“配置文件”。 “授权代码授予”流程(您正在使用的)需要一个用于交换令牌代码的服务器端组件。

    单页应用程序,通常使用隐式流程。快速描述见这里:https://docs.auth0.com/protocols#5(忽略对“Auth0”的引用,无论实现如何,底层协议都是相同的)。

    有关这两个流程的更详细说明,请参见此处:What is the difference between the 2 workflows? When to use Authorization Code flow?

    【讨论】:

      【解决方案2】:

      抱歉,这是一个奇怪的问题和糟糕的措辞。但我最终做的是制作一个包含代码的 HTML 回调页面。我在一个窗口中弹出 OAuth2 服务器页面,然后它调用我的回调页面。然后我的回调页面将关闭窗口并将代码传递回我的父页面。

      【讨论】:

        猜你喜欢
        • 2020-08-23
        • 2018-04-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多