当尝试使用 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) 我刚刚实现了简单的基于 Angular 的应用程序,并使用 Auth0 按钮登录。当我直接在浏览器上打开它时效果很好。我可以登录成功。我的目标是使用 iframe(作为一种小部件)将我的应用程序嵌入到另一个网页中。
\n\n<div class="css"><iframe src="https://myapp.com"></iframe></div>\nRun Code Online (Sandbox Code Playgroud)\n\n登录逻辑如下
\n\nlogin(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 }\nRun Code Online (Sandbox Code Playgroud)\n\n但是在登录过程中我收到错误
\n\n\n\n\n系统中可能存在配置错误或服务中断。\n 我们会自动跟踪这些错误,但如果问题仍然存在,请随时与我们联系。请再试一次。
\n\ninvalid_request :您可能在登录期间按了后退按钮、刷新了\n、打开了太多登录对话框,或者 cookie 存在一些问题,因为我们无法\xe2\x80\x99 找到您的会话。尝试从应用程序再次登录,如果问题仍然存在,请联系管理员。
\n
在网络选项卡上我可以看到
\n\n\n \n\n\n
得到 302 的位置信息
\n\n\n\n\n/u/login?state=g6Fo2xxxxxxx
\n
进而
\n\n\n\n\nhttps://mycustomname.eu.auth0.com//u/login?state=g6Fo2xxxxxxx
\n
返回 400 HTTP 代码。
\n\n可能出什么问题了?它\xe2\x80\x99s 不可能在 iframe 上使用 Auth0 吗?
\n我正在尝试让 OpenID Connect 身份验证适用于我的旧版 ASP.NET MVC 应用程序。我的 ASP.NET MVC 应用程序将作为中继方,我们的业务合作伙伴将作为身份提供者。
为了熟悉我需要做什么,我在 Auth0 上创建了一个帐户,并为 Web 应用程序创建了一个新的应用程序。然后我从 GitHub 下载了他们的 ASP.NET MVC OWIN 快速入门。我已完成所有设置,并且能够使用 Microsoft Edge 和 Firefox成功进行身份验证。但对于 Chrome,工作流程是这样的:
/authorize端点/callback向localhost:3000 上的端点发出 POST 请求检查 HTTP 流量,我发现Chrome 的问题在于步骤 (3) 中 - 当服务器在 302 重定向中设置 Nonce cookie 时 - Chrome 没有保存它。因此,当步骤(5)发生时,浏览器不会向服务器发送任何Nonce信息,验证失败。 …
我正在尝试在反应应用程序中模拟出来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) 我正在尝试将 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) 我正在尝试验证签名的令牌并使用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) 我已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)
回复:
Run Code Online (Sandbox Code Playgroud){"access_token":"encoded_access_token","expires_in":86400,"token_type":"Bearer"}
2.请求组列表:
curl -X GET \
https://domain.us.webtask.io/some_hash/api/groups \
-H 'authorization: Bearer access_token'
Run Code Online (Sandbox Code Playgroud)
回复:
Run Code Online (Sandbox Code Playgroud){ "statusCode": 403, "error": "Forbidden", "message": "Insufficient scope" }
我正在构建一个Angular(版本5)应用程序,它只与一个后端,我的API(Web服务器上的烧瓶应用程序)进行通信,后者又与我的数据库进行通信.该应用程序用于数据输入和可视化,其中数据不断加载并保存到后端或从后端保存.我控制了这三个部分.
我正在考虑使用Auth0来处理身份验证/用户管理.
我的问题是,我可以将此应用程序视为"常规"Web应用程序并使用身份验证代码授予,而不是通常建议用于SPA的隐式授权吗?那是:
通过围绕Implicit Grants与Authentication Code Grants的大量讨论,看起来主要区别在于,在真正的SPA应用程序中,没有单一服务器由资源提供者控制,可以存储客户端密钥或令牌.但是,根据我的情况,我不能仅仅将SPA应用程序视为传统(ajax-heavy)网页吗?
我在auth0论坛中发现了这篇帖子,暗示这可能是"脆弱的,因为在实践中你有一个OAuth2流程应由两个独立的组件来处理",但我不明白组件之间的独立性应该如何产生任何差别.
使用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)
现在调用 EITHERroles或users失败并显示此错误:
{"error":"access_denied","error_description":"客户端尚未被授予作用域:read:roles"}
如果我read:roles从 中删除scope,则创建用户调用成功(但显然roles.getAll失败)
我已经在仪表板 ( APIs=> Auth0 Management API=> Permissions) 中检查了我的 API 权限,它似乎包含所有内容:
(注意:权限顶部有一条消息,表明重要提示:权限管理不适用于代表 Auth0 资源的 API。 - 我无法更改权限)
我们正在将 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)