当前位置: 首页 > 知识库问答 >
问题:

开发环境的Auth0回调重定向

慕才
2023-03-14

Auth0有一份非常完整的文档,有时即使你通读1000遍,它对我个人来说还是没有意义,所以希望其他人也有类似的问题。

我想要什么?

ii我从我的本地主机环境登录,该环境是用aust0编译的。WebAuth对象如下所示:

 auth0 = new auth0.WebAuth({
     clientID: 'adscsdcascascascasdcsdac',
     domain: 'webatom.auth0.com',
     responseType: 'token id_token',
     audience: 'https://api.webatom.com',
     redirectUri: 'http://localhost:5000/callback',        
     scope: 'openid profile'
 });

我希望它将开发者重定向到本地主机。

如果我从生产环境ie登录(或者用户登录)。在jtrade.pro中,我希望它们被重定向到jtrade.pro/callback.。显然,产品版本中的对象如下所示(具有不同的重定向uri):

auth0 = new auth0.WebAuth({
    clientID: 'adscsdcascascascasdcsdac',
    domain: 'webatom.auth0.com',
    responseType: 'token id_token',
    audience: 'https://api.webatom.com',
    redirectUri: 'http://jtrade.pro/callback',        
    scope: 'openid profile'
});

据我所知,你就是这样做的。传递uri,如果uri在客户端设置中为白名单并以逗号分隔,则将重定向到所需页面。美女,我白名单,逗号分隔。

最后一步,托管页面。

var lock = new Auth0Lock(config.clientID, config.auth0Domain, {
  auth: {
    redirectUrl:  config.callbackURL,
    responseType: 'token',
    params: config.internalOptions
  },
  assetsUrl:  config.assetsUrl,
  allowedConnections: connection ? [connection] : null,
  rememberLastLogin: !prompt,
  language: language,
  languageDictionary: languageDictionary,
  theme: {

  },
  prefill: loginHint ? { email: loginHint, username: loginHint } : null,
  closable: false,
});

重定向URL被设置为config.callbackURL,据我所知,它让auth0查看白名单,看看是否有一个提供的uri,如果有,就重定向用户。

但是,这不会发生。Auth0 仅将用户重定向到白名单中的第一个 URI。我找不到适合此问题的解决方案。希望有人也遇到这种情况。

共有2个答案

许庆
2023-03-14

问题是,我没有调用将用户重定向到/authorizeendpoint的方法auth0.authorize(),而是硬编码了url,并将用户重定向到/loginendpoint,并且没有在参数中包含任何数据(即url字符串内)。你不必使用这个方法,如果你愿意,你也可以自己构造这个字符串。关于该方法的完整指南可以在这里找到。

潘翰藻
2023-03-14

检查了上面的内容,我看到的行为是不同的——Auth0正确使用了传入的重定向Uri。您应该仔细检查您的所有设置,您的设置/配置有问题。以下是调查结果的总结:

客户端应用程序(使用现成的React样本):

 auth0 = new auth0.WebAuth({
    domain: AUTH_CONFIG.domain,
    clientID: AUTH_CONFIG.clientId,
    redirectUri: AUTH_CONFIG.callbackUrl,
    audience: `https://${AUTH_CONFIG.domain}/userinfo`,
    responseType: 'token id_token',
    scope: 'openid'
  });

翻译为以下每个:

https://demo.auth0.com/login?client=zalZ1MxxxxxxxxxxxZ5xfZga&protocol=oauth2&redirect_uri=http://localhost:3000/callback&response_type=token id_token&scope=openid&audience=https://demo.auth0.com/userinfo&nonce=2OfVCpn-4Ka9k33h50Y5YjNgw8nsxE5B

https://demo.auth0.com/login?client=zalZ1MxxxxxxxxxxxZ5xfZga&protocol=oauth2&redirect_uri=http://localhost:3001/callback&response_type=token id_token&scope=openid&audience=https://demo.auth0.com/userinfo&nonce=kDNsP5Sfp1M0ydJ57h7eG.S_sNkO7gRs

使用默认的Auth0 HLP,您将得到以下内容:

<script src="https://cdn.auth0.com/js/lock/10.18/lock.min.js"></script>
  <script>
    // Decode utf8 characters properly
    var config = JSON.parse(decodeURIComponent(escape(window.atob('@@config@@'))));
    config.extraParams = config.extraParams || {};
    var connection = config.connection;
    var prompt = config.prompt;
    var languageDictionary;
    var language;

    if (config.dict && config.dict.signin && config.dict.signin.title) {
      languageDictionary = { title: config.dict.signin.title };
    } else if (typeof config.dict === 'string') {
      language = config.dict;
    }
    var loginHint = config.extraParams.login_hint;

    var lock = new Auth0Lock(config.clientID, config.auth0Domain, {
      auth: {
        redirectUrl: config.callbackURL,
        responseType: (config.internalOptions || {}).response_type ||
          config.callbackOnLocationHash ? 'token' : 'code',
        params: config.internalOptions
      },
      assetsUrl:  config.assetsUrl,
      allowedConnections: connection ? [connection] : null,
      rememberLastLogin: !prompt,
      language: language,
      languageDictionary: languageDictionary,
      theme: {
        //logo:            'YOUR LOGO HERE',
        //primaryColor:    'green'
      },
      prefill: loginHint ? { email: loginHint, username: loginHint } : null,
      closable: false,
      // uncomment if you want small buttons for social providers
      // socialButtonStyle: 'small'
    });

    lock.show();
  </script>

这会在原始回调 URL (redirectUri) 中分配的端口上正确回调客户端。

 类似资料:
  • 当项目逐渐变大,webpack 的编译时间会变长,可以通过参数让编译的输出内容带有进度和颜色。 $ webpack --progress --colors 如果不想每次修改模块后都重新编译,那么可以启动监听模式。开启监听模式后,没有变化的模块会在编译后缓存到内存中,而不会每次都被重新编译,所以监听模式的整体速度是很快的。 $ webpack --progress --colors --watch

  • Termux 支持的开发环境很强,可以完美的运行 C、Python、Java、PHP、Ruby等开发环境,建议读者朋友们选择自己需要的开发环境折腾。 编辑器 写代码前总得折腾一下编辑器,毕竟磨刀不误砍柴工嘛。Termux 支持多种编辑器,完全可以满足日常使用需求。 Emacs 据说Emacs是神的编辑器,国光我这种小菜鸡还不会使用哎,但是 Termux 官方已经封装好了 Emacs了,我们安装起来

  • 你可以使用原生的Node.js开发环境来开发Electron应用。 为了打造一个Electron桌面程序的开发环境,你只需要安装好的Node.js、npm、一个顺手的代码编辑器以及对你的操作系统命令行客户端的基本了解。 Developer Environment Electron development is essentially Node.js development. To turn you

  • 主机系统环境搭建 推荐使用ubuntu 16.04 64位镜像 下载地址:http://releases.ubuntu.com/16.04/ 备用地址:阿里云镜像 Ubuntu 16.04 安装 U盘启动安装Ubuntu16.04详解 VMware虚拟机安装Ubuntu16.04 Ubuntu下代码编辑器 vim ubuntu 16.04 配置vim开发环境 visual studio code

  • 1. 运行环境 2. 编译和运行项目 Device System: iOS 8.0 or later language Version: Swift 4.0 IDE Version: Xcode 10 or later 项目是用 CocoaPods 管理第三方依赖的,CocoaPods 的环境搭建参考官方文档 或者这篇博文 项目下载成功之后,在命令行工具中( Mac 上的终端程序或者 iTerm)

  • 1. 环境要求 安装 Android Studio,配置好相应的开发环境,具体教程可以在网上搜索相关教程,这里不再赘述; 需注意的是,Android studio 的版本最好更新为 3.2.1;gradle 版本 4.6。 安装好 Android Studio 后,开始导入公版APP源码,具体操作如下: 点击箭头所指的选项,会弹出文件选择框,找到第一步下载的源码,点击确定后就可以自动导入源码到 A