我的oauth2回调页面是相同的html页面吗?还有我怎么拿到代币

本文关键字:还有我 html 回调 oauth2 我的 | 更新日期: 2023-09-27 18:05:06

首先,我使用静态html和javascript和c# Web API。我有一个调用oauth2服务器的链接,在我的html文件中,比如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有令牌,它可以调用资源吗?

对不起,我还在学习

我的oauth2回调页面是相同的html页面吗?还有我怎么拿到代币

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

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

查看这里对两个工作流的更详细的描述:两个工作流之间的区别是什么?何时使用授权码流程?

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

相关文章: