我正在使用 Auth0 的免费计划。我已经阅读了大量不同的手册,但无法理解如何获得用户的权限。我已经设置了角色,为他们添加了权限,将此角色分配给了用户。我正在使用 05-Token-Renewal(来自 Auth0 示例)并且在 idTokenPayload 中我什至有图片,但没有权限。如何获得它们?
您好,我正在尝试将 Auth0 的 spa 示例与 react 一起使用,我正在使用 useAuth0 钩子,我也在使用 Apollo 客户端进行查询,我需要获取令牌并将其设置在请求中,但是我没有t 能够设置它。
如果有人能指出我正确的方向,我将不胜感激。
我试图在查询/变异组件中使用上下文属性,但我无法弄清楚,也找不到有关如何使用它的信息。
我尝试使用新包 ( https://github.com/auth0/auth0-spa-js )登录到 Auth0 。
尝试 1:我确实尝试了一个最佳实践,它使用cy.request()但看起来像新的auth0-spa-js包现在loginWithRedirect在请求 URL 中需要一个随机状态字符串(我没有,它是从函数生成的)。所以我不能在 Auth0 的 API 中调用登录
尝试 2:我设置"chromeWebSecurity": false,单击登录按钮 -> 我的网站被重定向到 Auth0 页面,URL 已正确加载,但 Auth0 拒绝auth0 url在框架中显示“ ”,因为祖先违反了以下内容安全策略指令:“框架-祖先‘无’”。
各位大侠有什么解决办法吗?
Auth0 提供了大量资源列表,描述了身份验证的最佳实践。其中有一连串建议不要localStorage用作存储 (JWT) 令牌的手段。
我发现这些点有几个问题:
auth0.getTokenSilently()他们的 SDK 来获取令牌,但据我所知,攻击者没有任何理由不能自己调用这个方法(即注入另一个 sdk 脚本,使用现有的客户端密钥,并且只是调用getToken 从那里),从而以几乎相同的方式获取令牌,就好像它存储在localStorage所以我完全同意 OWASP 的建议,不要将敏感数据localStorage存储在 . 但这只是因为这些东西会允许攻击者扩大攻击范围(访问银行帐户,尝试在其他应用程序中重复使用用户的密码等)。但我很难看出 accessTokens 是如何受此影响的。
我有一个隐藏在 Auth0 锁后面的单页应用程序,使用@auth0/auth0-spa-js。我想使用 Cypress 对其进行测试,因此我决定关注Auth0官方博客文章以及 Johnny Reilly博客文章。
我能够使用建议的请求从 auth0 成功检索有效的 JWT 令牌。我不知道该怎么办:(
我面临的问题是,上述两种方法都依赖于应用程序在本地存储 JWT 令牌(在 cookie 或 localstorage 中)。然而,@auth0/auth0-spa-js使用不同的方法,我假设所有相关的 cookie/localstorage 都存储在 auth0 域中。
你有什么想法,如果有办法绕过它吗?
我正在使用 React(react-create-app 和 TypeScript)。使用 Auth0 进行登录。
我想用 Jest 编写测试,我发现这个资源基本上是唯一关于模拟 Auth0 对象的内容。
所以我的代码看起来像这样:
import React from "react";
import ReactDOM from "react-dom";
import TopBar from "./index";
import {
useAuth0
} from "react-auth0-spa";
const user = {
email: "johndoe@me.com",
email_verified: true,
sub: "google-oauth2|12345678901234"
};
// intercept the useAuth0 function and mock it
jest.mock("react-auth0-spa");
describe("First test", () => {
beforeEach(() => {
// Mock the Auth0 hook and make it return a logged in state
useAuth0.mockReturnValue({
isAuthenticated: true,
user,
logout: jest.fn(),
loginWithRedirect: jest.fn()
}); …Run Code Online (Sandbox Code Playgroud)我有一个基于 Auth0 的快速入门应用程序之一的 Vue SPA(https://github.com/auth0-samples/auth0-vue-samples)。开箱即用,一切正常,但是一旦我尝试在组件代码中使用 Auth0 客户端,我就会遇到问题。我遵循了“调用 API”教程(https://auth0.com/docs/quickstart/spa/vuejs/02-calling-an-api),它无助地只展示了如何使用按钮调用 API。我想要做的是在初始页面加载时触发对我的 API 的经过身份验证的调用,以便我可以确保某些数据存在于我自己的 API 中(如果没有,则创建它)。这看起来应该很简单。我只是将这段代码扔到我创建的 Vue 组件钩子中:
await this.$auth.getTokenSilently().then((authToken) => {
// reach out to my API using authToken
});
Run Code Online (Sandbox Code Playgroud)
如果应用程序从我的 npm 开发服务器热重新加载,这实际上可以正常工作,它会访问我的 API,该 API 使用令牌授权请求,并发回正确的数据。问题是当我手动重新加载页面时,这会导致:
Uncaught (in promise) TypeError: Cannot read property 'getTokenSilently' of null
at Vue.getTokenSilently (authWrapper.js?de49:65)
at _callee$ (App.vue?234e:49)
Run Code Online (Sandbox Code Playgroud)
在 authWrapper.js 文件(Auth0 客户端所在的位置)中,函数调用如下:
getTokenSilently(o) {
return this.auth0Client.getTokenSilently(o);
}
Run Code Online (Sandbox Code Playgroud)
当我调试调用时,“auth0Client”不存在,这就是它失败的原因。我无法理解的是在我尝试拨打电话之前确保它确实存在的正确方法。样本中没有任何内容表明执行此操作的正确方法。我尝试将我的组件代码放在不同的组件和不同的 Vue 生命周期钩子(created、beforeMount、mounted 等)中,所有结果都相同。客户端成为后800毫秒左右可用,但不是这个代码执行时。
这显然是一个时间问题,但我不清楚如何告诉我的组件代码坐下来等待 this.auth0Client 为非空而不做一些像 setInterval 那样可怕和骇人听闻的事情。
javascript authentication single-page-application vue.js auth0
我设法让 Auth0 对我的 Vue.js 应用程序有些作用。快速入门指南很简单。所以发生的事情是我设法使用了登录功能并被提示使用 Auth0 登录对话框。我使用我的 google 帐户进行了快速登录。这也奏效了。我的 google 帐户现在在我的 Auth0 仪表板中显示为新用户。
然而,登录后我返回到我的 Vue.js 应用程序,但授权似乎没有成功。
网络选项卡告诉我以下内容:
{"error":"access_denied","error_description":"Unauthorized"}
Run Code Online (Sandbox Code Playgroud)
我想知道在用户被视为“授权”之前我是否必须给他一些角色或权限?我的印象是默认情况下这将是正确的,并且只有在我开始在 Auth0 仪表板中定义角色时才会受到限制。
请赐教!
PS:我在处理 SPA 时正在使用 Auth0 提供的非隐式登录对话框。我读到可能会引起麻烦?
以及“失败交换”日志的原始数据:
{
"date": "2020-08-24T10:43:52.005Z",
"type": "feacft",
"description": "Unauthorized",
"connection_id": "",
"client_id": "<Client_ID>",
"client_name": null,
"ip": "85.197.56.111",
"user_agent": "Chrome 83.0.4103 / Linux 0.0.0",
"details": {
"code": "*************T8a"
},
"hostname": "alemanni-game.eu.auth0.com",
"user_id": "",
"user_name": "",
"log_id": "90020200824104353383000015217913666506642073534760747026",
"_id": "90020200824104353383000015217913666506642073534760747026",
"isMobile": false
}
Run Code Online (Sandbox Code Playgroud) 使用 express-openid-connect 时出现此错误
TypeError: "secret" is required
at module.exports.get (/home/mathkr/persodev/node_modules/express-openid-connect/lib/config.js:166:11)
at module.exports (/home/mathkr/persodev/node_modules/express-openid-connect/middleware/auth.js:27:18)
at Object.<anonymous> (/home/mathkr/persodev/server.js:26:9)
Run Code Online (Sandbox Code Playgroud)
我的server.js代码是
const express = require('express');
const app = express();
const port = process.env.PORT || 4200;
const {auth, requiresAuth} = require('express-openid-connect');
const dotenv = require('dotenv');
const session = require('express-session');
const sess = {
secret: 'somethingsecret',
cookie: {},
resave: false,
saveUninitialized: true
};
if (app.get('env') === 'production') {
sess.cookie.secure = true;
app.set('trust proxy', 1);
}
app.use(session(sess));
const config = {
...(dotenv.config()).parsed,
authRequired: false,
auth0Logout: …Run Code Online (Sandbox Code Playgroud) 我正在开发一个 ASP.NET Core v2.1 Razor Pages 项目,在该项目中我正在实施 Auth0 以进行用户身份验证。设置完所有内容后,我尝试构建我的项目,但出现以下异常:
System.TypeLoadException: 'Could not load type 'Microsoft.Extensions.Primitives.InplaceStringBuilder'
from assembly 'Microsoft.Extensions.Primitives, Version=5.0.0.0, Culture=neutral,
PublicKeyToken=adb9793829ddae60'.'
Run Code Online (Sandbox Code Playgroud)
为了设置 Auth0,我必须安装 Microsoft.Extensions.Primitives nuget 包。但是,在尝试构建我的项目时,这是我得到的错误。如果我删除包,当我尝试构建项目时,我会收到以下错误:
Version conflict detected for Microsoft.Extensions.Primitives. Install/reference
Microsoft.Extensions.Primitives 5.0.0 directly to your project to resolve this issue.
Run Code Online (Sandbox Code Playgroud)
以下代码是抛出异常的地方:
public class Program
{
public static void Main(string[] args)
{
CreateWebHostBuilder(args).Build().Run();
}
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>();
}
Run Code Online (Sandbox Code Playgroud)
我已经读到 Microsoft.Extensions.Primitives 中不再存在 InplaceStringBuilder,所以我假设这是导致问题的原因。但是,我没有看到 InplaceStringBuilder 在任何地方使用,所以我似乎无法弄清楚它甚至需要什么。
有谁知道解决这个问题的方法?
auth0 ×10
cypress ×2
javascript ×2
reactjs ×2
apollo ×1
asp.net-core ×1
auth0-lock ×1
c# ×1
express ×1
graphql ×1
jestjs ×1
jwt ×1
node.js ×1
react-hooks ×1
typescript ×1
vue.js ×1