标签: auth0

404 auth0 更新用户(PUT)

当尝试使用 auth0 发出 PUT 请求时,我不断遇到 404“用户未找到”错误。

我正在尝试更新用户,并使用他们的文档告诉我使用的确切端点进行此 API 调用。

当从他们的文档中拨打电话时(他们有一个内置测试),我发送的正文一切正常,并且我收到了 200 成功消息。

当我尝试从我的应用程序进行相同的调用时,我不断收到 404 用户未找到错误。

但是,当我使用相同的端点user_id从我的应用程序获取时,一切正常(证明我的 cliendID 配置正确)。

为什么会失败?

var updateAuthUser = function(){
    var request = {
        "user_metadata": {
            "springboardID": 100055
        }
    }

    var update = $http.put('https://app36591925.auth0.com/api/v2/users/auth0%7C5606b3c4b0c70b49698612fc', request);

    update.then(function(response) {
            console.log("update success", response);
        }, function(response) {
            console.log("update failure", response);
        });
    return update;
}
Run Code Online (Sandbox Code Playgroud)

工作 GET 请求:

var getAuthUser = function(){
    $http.get('https://app36591925.auth0.com/api/v2/users/auth0|5606b3c4b0c70b49698612fc')
        .then(function(response){
            console.log("response", response);

            var deferred = $q.defer();
            deferred.resolve(response);
            return deferred.promise;
        });
}
Run Code Online (Sandbox Code Playgroud)

put http-status-code-404 angularjs auth0

2
推荐指数
1
解决办法
786
查看次数

如何在iframe上使用Auth0登录

我刚刚实现了简单的基于 Angular 的应用程序,并使用 Auth0 按钮登录。当我直接在浏览器上打开它时效果很好。我可以登录成功。我的目标是使用 iframe(作为一种小部件)将我的应用程序嵌入到另一个网页中。

\n\n
<div class="css"><iframe src="https://myapp.com"></iframe></div>\n
Run Code Online (Sandbox Code Playgroud)\n\n

登录逻辑如下

\n\n
login(redirectPath: string = \'/\') {\n    this.auth0Client$.subscribe((client: Auth0Client) => {\n      client.loginWithRedirect({\n        redirect_uri: `https://some.now.sh`,\n        appState: {target: redirectPath},\n      });\n    });\n  }\n
Run Code Online (Sandbox Code Playgroud)\n\n

但是在登录过程中我收到错误

\n\n
\n

系统中可能存在配置错误或服务中断。\n 我们会自动跟踪这些错误,但如果问题仍然存在,请随时与我们联系。请再试一次。

\n\n

invalid_request :您可能在登录期间按了后退按钮、刷新了\n、打开了太多登录对话框,或者 cookie 存在一些问题,因为我们无法\xe2\x80\x99 找到您的会话。尝试从应用程序再次登录,如果问题仍然存在,请联系管理员。

\n
\n\n

在网络选项卡上我可以看到

\n\n
\n

https://mycustomname.eu.auth0.com/authorize?xxxx

\n
\n\n

得到 302 的位置信息

\n\n
\n

/u/login?state=g6Fo2xxxxxxx

\n
\n\n

进而

\n\n
\n

https://mycustomname.eu.auth0.com//u/login?state=g6Fo2xxxxxxx

\n
\n\n

返回 400 HTTP 代码。

\n\n

可能出什么问题了?它\xe2\x80\x99s 不可能在 iframe 上使用 Auth0 吗?

\n

single-sign-on auth0 angular

2
推荐指数
1
解决办法
6536
查看次数

Chrome 未在我的 OpenID Connect 工作流程 (ASP.NET OWIN) 中保存/返回 Nonce cookie

我正在尝试让 OpenID Connect 身份验证适用于我的旧版 ASP.NET MVC 应用程序。我的 ASP.NET MVC 应用程序将作为中继方,我们的业务合作伙伴将作为身份提供者。

为了熟悉我需要做什么,我在 Auth0 上创建了一个帐户,并为 Web 应用程序创建了一个新的应用程序。然后我从 GitHub 下载了他们的 ASP.NET MVC OWIN 快速入门。我已完成所有设置,并且能够使用 Microsoft Edge 和 Firefox成功进行身份验证。但对于 Chrome,工作流程是这样的:

  1. 访问本地主机:3000
  2. 尝试访问受保护的资源,这会将我重定向到 localhost:3000/Account/Login
  3. /Account/Login 创建质询,它执行两件事:(1) 创建 Nonce cookie,以及 (2) 将用户重定向到 Auth0 的/authorize端点
  4. 我在 Auth0 的登录屏幕上成功登录
  5. /callback向localhost:3000 上的端点发出 POST 请求
  6. 我收到黄屏死机并显示以下消息:

IDX21323:RequireNonce 是“System.Boolean”。OpenIdConnectProtocolValidationContext.Nonce 为 null,OpenIdConnectProtocol.ValidatedIdToken.Payload.Nonce 不为 null。无法验证随机数。如果不需要检查随机数,请将 OpenIdConnectProtocolValidator.RequireNonce 设置为“false”。请注意,如果找到“随机数”,则会对其进行评估。

检查 HTTP 流量,我发现Chrome 的问题在于步骤 (3) 中 - 当服务器在 302 重定向中设置 Nonce cookie 时 - Chrome 没有保存它。因此,当步骤(5)发生时,浏览器不会向服务器发送任何Nonce信息,验证失败。 …

cookies asp.net-mvc owin openid-connect auth0

2
推荐指数
1
解决办法
6164
查看次数

开玩笑地在 @auth0 中嘲笑 Auth0Client

我正在尝试在反应应用程序中模拟出来import { Auth0Provider } from "@auth0/auth0-react";,并不断遇到此错误的问题[Error: For security reasons, window.crypto is required to run auth0-spa-js.]据我所知,此错误来自从Auth0Client导入的import { Auth0Client } from '@auth0/auth0-spa-js';我的想法是模拟作用域模块@auth0/auth0-spa-js并执行类似的操作

const handleRedirectCallback = jest.fn(() => ({ appState: {} }));
const buildLogoutUrl = jest.fn();
const buildAuthorizeUrl = jest.fn();
const checkSession = jest.fn();
const getTokenSilently = jest.fn();
const getTokenWithPopup = jest.fn();
const getUser = jest.fn();
const getIdTokenClaims = jest.fn();
const isAuthenticated = jest.fn(() => false);
const loginWithPopup = jest.fn();
const loginWithRedirect = …
Run Code Online (Sandbox Code Playgroud)

reactjs jestjs auth0

2
推荐指数
1
解决办法
3122
查看次数

如何使用 nuxt3 实现 auth0

我正在尝试将 auth0 添加到我的 nuxt3 应用程序中,但我在如何处理它时遇到了困难。auth-nuxt 模块仍然不适用于 nuxt3,并且 auth0-spa-js 无法使其与 SSR 一起使用,我遵循了本教程

import createAuth0Client from "@auth0/auth0-spa-js";

let auth = await createAuth0Client({
  domain: "dev-......com",
  client_id: "Z0...................0T6I",
  redirect_uri: '<MY_CALLBACK_URL>'
});

export default auth;
Run Code Online (Sandbox Code Playgroud)
import auth from "../store/authfile";
export default defineNuxtRouteMiddleware(async (to, from) => {
    let isAuthenticated = await auth.isAuthenticated();
    if (to.path === "/" && !to?.query?.code) {
        return;
    }
    if (!isAuthenticated) {
        const query = to?.query;
        if (query && query.code && query.state) {
            await auth.handleRedirectCallback();
        } else {
            await auth.loginWithRedirect();
        }
    } …
Run Code Online (Sandbox Code Playgroud)

auth0 nuxt.js vuejs3 nuxtjs3

2
推荐指数
1
解决办法
3544
查看次数

NodeJS JWT令牌验证

我正在尝试验证签名的令牌并使用NodeJS从中提取信息。

我现在在浏览器中有一个名为userToken的令牌,登录后已保存(我使用auth0登录)。

我尝试在此处手动验证我的令牌:http : //jwt.io,它可以正常工作,并且为我提供了有效载荷数据,而没有出现问题。但是,我不能用NodeJS做同样的事情。我该怎么做?

我读了文档,但听不懂。 https://github.com/auth0/express-jwt

这是我的server.js

var http = require('http');
var express = require('express');
var cors = require('cors');
var app = express();
var jwt = require('express-jwt');
var dotenv = require('dotenv');

dotenv.load();

var authenticate = jwt({
    secret: new Buffer(process.env.AUTH0_CLIENT_SECRET, 'base64'),
    audience: process.env.AUTH0_CLIENT_ID
});


// view engine setup
var path = require('path');
app.set('views', path.join(__dirname, 'views'));
app.use(express.static(path.join(__dirname, 'public')));

app.set('view engine', 'jade');


app.configure(function () {

    // Request body parsing middleware should be above methodOverride
    app.use(express.bodyParser());
    app.use(express.urlencoded());
    app.use(express.json());
    app.use(cors());

    app.use(app.router);
}); …
Run Code Online (Sandbox Code Playgroud)

javascript node.js auth0

1
推荐指数
2
解决办法
2400
查看次数

请求 Auth0-Authorization 扩展中的组列表但返回 403: 范围不足错误

我已Authorization在我的 Auth0 帐户中安装了该扩展程序,因此授权功能可以完美运行,但现在我想访问我在该授权扩展程序中创建的所有组。因此,我遵循了授权文档,但是当我使用为其生成的令牌时,它会403: Insufficient scope在响应中抛出错误。

这些是我经历过的步骤:

1.请求令牌:

 curl -X POST \
  https://my_domain.auth0.com/oauth/token \
  -H 'cache-control: no-cache' \
  -H 'content-type: application/json' \
  -d '{
    "client_id":"auth0-authorization-extension-api-client-id",
    "client_secret":"auth0-authorization-extension-api-secret",
    "audience":"urn:auth0-authz-api",
    "grant_type":"client_credentials"
}'
Run Code Online (Sandbox Code Playgroud)

回复:

{"access_token":"encoded_access_token","expires_in":86400,"token_type":"Bearer"}
Run Code Online (Sandbox Code Playgroud)

2.请求组列表:

 curl -X GET \
  https://domain.us.webtask.io/some_hash/api/groups \
  -H 'authorization: Bearer access_token'
Run Code Online (Sandbox Code Playgroud)

回复:

{
  "statusCode": 403,
  "error": "Forbidden",
  "message": "Insufficient scope"
}
Run Code Online (Sandbox Code Playgroud)

authorization oauth-2.0 auth0

1
推荐指数
1
解决办法
323
查看次数

我可以使用授权代码授予与API紧密结合的SPA(我拥有)吗?

我正在构建一个Angular(版本5)应用程序,它只与一个后端,我的API(Web服务器上的烧瓶应用程序)进行通信,后者又与我的数据库进行通信.该应用程序用于数据输入和可视化,其中数据不断加载并保存到后端或从后端保存.我控制了这三个部分.

我正在考虑使用Auth0来处理身份验证/用户管理.

我的问题是,我可以将此应用程序视为"常规"Web应用程序并使用身份验证代码授予,而不是通常建议用于SPA的隐式授权吗?那是:

  1. SPA将从auth0通过/ login端点获取授权代码,重定向到相应的auth0页面
  2. 授权代码通过某个端点(可能是/ callback端点)传递给API.
  3. API与Auth0交谈以交换交换AC作为令牌.
  4. 每次请求都会将令牌传递给数据库,如果令牌无效,则拒绝令牌(使用postgresql在数据库中进行令牌有效性检查)
  5. API服务器上的令牌与用户之间的关联是通过加密的cookie(Flask的'session'变量)完成的

通过围绕Implicit Grants与Authentication Code Grants的大量讨论,看起来主要区别在于,在真正的SPA应用程序中,没有单一服务器由资源提供者控制,可以存储客户端密钥或令牌.但是,根据我的情况,我不能仅仅将SPA应用程序视为传统(ajax-heavy)网页吗?

我在auth0论坛中发现了这篇帖子,暗示这可能是"脆弱的,因为在实践中你有一个OAuth2流程应由两个独立的组件来处理",但我不明白组件之间的独立性应该如何产生任何差别.

oauth-2.0 single-page-application auth0

1
推荐指数
1
解决办法
1678
查看次数

客户端尚未被授予范围:读取角色

使用node-auth0包,连​​接正常工作,但我现在尝试对角色做一些工作并添加了read:roles范围,现在导致错误。

下面的最小代码:

const ManagementClient = require('auth0').ManagementClient;
const auth0 = new ManagementClient(
    {
        domain: process.env.AUTH0_DOMAIN,
        clientId: process.env.AUTH0_CLIENT_ID,
        clientSecret: process.env.AUTH0_CLIENT_SECRET,
        scope: 'read:users update:users read:roles'
    });

// both these calls fail
const auth0_roles = auth0.roles.getAll();
const auth0_tester = auth0.users.create(data);
Run Code Online (Sandbox Code Playgroud)

现在调用 EITHERrolesusers失败并显示此错误:

{"error":"access_denied","error_description":"客户端尚未被授予作用域:read:roles"}

如果我read:roles从 中删除scope,则创建用户调用成功(但显然roles.getAll失败)

我已经在仪表板 ( APIs=> Auth0 Management API=> Permissions) 中检查了我的 API 权限,它似乎包含所有内容:

(注意:权限顶部有一条消息,表明重要提示:权限管理不适用于代表 Auth0 资源的 API。 - 我无法更改权限)

在此处输入图片说明

javascript node.js auth0

1
推荐指数
1
解决办法
1271
查看次数

添加到 next.config.js 的机密安全性

我们正在将 Auth0 添加到我们的 Next.js 网站并引用示例。

我想知道的是示例中next.config.js中的设置。它将 Auth0 和其他机密放在客户端(通过 Webpack)。这不会让这些秘密处于危险之中吗?由于它们位于客户端代码的某个位置,因此有可能发出访问机密的请求。

这篇 Auth0 文章中的示例也将机密放在客户端中。

我没有很幸运地发现 Webpack 如何处理变量,我希望社区对此有所了解。我们正在努力确保我们的模式在放置之前是安全的。

例如,将机密添加到客户端next.config.js

const dotenv = require('dotenv')
dotenv.config()

module.exports = {
  env: {
    AUTH0_DOMAIN: process.env.AUTH0_DOMAIN,
    AUTH0_CLIENT_ID: process.env.AUTH0_CLIENT_ID,
    AUTH0_CLIENT_SECRET: process.env.AUTH0_CLIENT_SECRET,
    AUTH0_SCOPE: 'openid profile',
    REDIRECT_URI:
      process.env.REDIRECT_URI || 'http://localhost:3000/api/callback',
    POST_LOGOUT_REDIRECT_URI:
      process.env.POST_LOGOUT_REDIRECT_URI || 'http://localhost:3000/',
    SESSION_COOKIE_SECRET: process.env.SESSION_COOKIE_SECRET,
    SESSION_COOKIE_LIFETIME: 7200, // 2 hours
  },
}
Run Code Online (Sandbox Code Playgroud)

auth0 next.js vercel

1
推荐指数
1
解决办法
424
查看次数