标签: auth0

如何在使用Auth0 Lock时管理后端用户?

我正在使用React创建一个前端,并使用Node创建后端.我想使用Auth0 Lock管理用户信息- 向API发送带有每个请求的JWT.

如果我需要做以下事情之一怎么办?

  • 存储带有作者ID的博客文章

Auth0唯一标识符user_id不是整数,因此不能用作ID /密钥.我如何在服务器端用户存储上处理这个问题?

  • 有一个用户表来存储"个人资料"或其他类似信息

我是否在每个API请求上阅读JWT,确定该用户是否存在,然后创建新用户(如果不存在),或者将其与预先存在的用户相关联.在每个API请求上检查用户数据库是否有效?

我不确定如何使用基于JWT的API和Auth0处理一般流程.

编辑:

经过一番研究和反思后我的想法:Auth0的唯一用户标识符由他们提供user_id.这里的问题是它不是整数.因此,它不应该用作users数据库中表的键.

看起来好像你不应该在每个请求上检查用户数据库,但这可能是不正确的.一个想法是在初始登录时回调到后端,如果该帐户不存在,则创建它,如果该帐户存在,则继续.然后在用户登录前端后,在每个后续请求中信任Auth0 JWT(如果它在后端验证).

从我在网上看到的这个过程的极少描述来看,我所描述的方式似乎是正常的方式.但在某些情况下它没有意义.如果用户被禁止怎么办?他们仍然可以使用活动的JWT访问服务器功能,直到它由于时间过期而到期.

因此,如果在每个API请求上检查用户存储是正常/高效的,那么如何将Auth0的字符串id user_id与数据存储区中的整数ID相关联以进行查询?我正在使用SQL变体.

javascript node.js jwt reactjs auth0

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

Angular 6 Auth0 - 全局未定义

我已将我的应用程序从角度5升级到角度6.我现在收到以下错误.

Uncaught ReferenceError: global is not defined
at Object../node_modules/auth0-lock/lib/utils/cdn_utils.js (cdn_utils.js:13)
Run Code Online (Sandbox Code Playgroud)

"angular2-jwt":"^ 0.2.3","auth0-js":"^ 9.5.1","auth0-lock":"^ 11.6.1",

auth0 angular

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

Auth0是否提供了导出用户数据库的方法?

Auth0看起来像一个非常有前途的用户管理解决方案,但我很好奇它是否允许您导出用户数据库.

这是一个重要特征,因为:

  1. 我想自己做备份.(不是因为我担心Auth0可能会丢失我的数据.但是如果我的代码中的错误或我的Auth0密钥被泄露了怎么办?)
  2. 我可能希望有一天能够切换用户管理提供商.

文档>将用户导入到Auth0,我发现有一种方法可以导入用户(无论如何都可以按需获取密码).我可以看到他们使用bcrypt进行密码散列(至少默认情况下).但我没有看到任何提及出口用户.

auth0

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

Auth0:在Auth0注册后在本地数据库中创建用户

我使用Auth0来托管我的所有用户数据.我也有自己的后端,我希望有一个Users表,它将我的数据库生成映射userId到Auth0 user_id.注册时,我在两个流程之间犹豫不决:

注册流程1:

  1. 前端显示Lock,用户注册.
  2. Auth0重定向回前端后,前端有Auth0 user_id.
  3. 前端调用后端POST /users(公共端点)以创建新用户user_id.
  4. 在对我的后端资源服务器的每个经过身份验证的请求中,JWT包含auth0 user_id,因此db在user_id和我之间进行查找userId.

注册流程2:

  1. 前端显示Lock,用户注册.
  2. 在Auth0上配置一个后注册挂钩,用于调用POST /users我的后端.此调用将生成我的数据库userId并将其发送回Auth0.
  3. 把它userId放到Auth0中user_metadata.
  4. user_metadata将包含在JWT中,因此对我的后端获取资源的所有调用都将包含db userId(不需要额外的查找).

我觉得2更坚固.还有其他注册流程吗?一些auth0客户是否使用与我的#2类似的流程?我在他们的文档中找不到多少.

auth0

11
推荐指数
2
解决办法
1502
查看次数

在Passport.js中刷新JWT令牌

我使用的护照-openidconnect策略效果很好,但是会话的有效期很短,只有3600秒,我认为它是不会更改的。

我会使用刷新令牌来获取另一个令牌ID吗?

如果我这样做,该在哪里添加这种逻辑呢?https://github.com/passport/express-4.x-openidconnect-example/blob/master/server.js

javascript openid-connect passport.js auth0 onelogin

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

如何将 Auth0 与 react-admin 一起使用?

我正在尝试在 react-admin v3 应用程序中使用 Auth0 实现身份验证。我需要实现一个authProvider与 Auth0 对话的对象。这听起来像是应该在某处可用的东西,但我能找到的最接近的是https://github.com/alexicum/merge-admin/blob/master/src/Auth/index.js,它大约有 2 岁(从那时起,SDK 发生了变化)。

是否有 Auth0 authProvider 可以重用的地方,还是我必须自己实现?

谢谢!

reactjs auth0 react-admin

11
推荐指数
2
解决办法
2751
查看次数

Auth0 不会在页面刷新时为电子邮件/密码持续登录

我使用 Auth0 作为使用 React 的 SPA 的身份验证提供程序。我遵循了他们博客中的Auth0 react 教程这个更详细的教程

我目前只使用电子邮件/密码身份验证。并且身份验证按预期进行登录/注销,检索用户信息等。

但是,当我刷新页面时,isAuthenticated来自的值useAuth0总是返回 false。即使在isLoading解析为 true 之后,我也必须再次登录。

奇怪的是,这种行为不会在 Chrome 或 Firefox 上发生。它在 Brave 和 Safari 上失败。

我在 Auth0(另一个有类似问题的人)的论坛帖子中注意到,Auth0Provider应该authorize使用 拨打电话prompte=none,确实如此。它还202在页面加载后不久返回成功(但不会更改isAuthenticatedtrue)。此调用还设置了一个 cookie auth0.is.authenticated=true

authorize?client_id=VALUE&redirect_uri=VALUE&scope=openid%20profile%20email&response_type=code&response_mode=web_message&state=VALUE&nonce=VALUE&code_challenge=VALUE&code_challenge_method=S256&prompt=none&auth0Client=VALUE
Run Code Online (Sandbox Code Playgroud)

这是我检查身份验证状态的路线。该组件Auth0ProviderWithHistory按照 Auth0 教程中的建议封装在代码中。

export default function Routes() {
  const { isLoading, isAuthenticated } = useAuth0()

  const getDashboard = () => {
    //determine which dashboard to return …
Run Code Online (Sandbox Code Playgroud)

javascript reactjs auth0 auth0-lock

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

Spring Boot - 支持多个颁发者-uri

你好,我一直在网上搜索,但收效甚微,我希望 SO 的有人能够提供帮助。

目前,我的 Spring Boot API(版本 2.5.4)接受 Auth0 提供的 JWT。现在我在那里创建了第二个租户,我正在努力了解如何支持两个或更多发行者 uri。

这是我目前正在做的事情:

@Configuration
@EnableWebSecurity(debug = false)
@EnableGlobalMethodSecurity(
        securedEnabled = true,
        jsr250Enabled = true,
        prePostEnabled = true
)
public class SecurityConfig extends WebSecurityConfigurerAdapter {

    @Value("${auth0.audience}")
    private String audience;

    @Value("${spring.security.oauth2.resourceserver.jwt.issuer-uri}")
    private String issuer;

    @Bean
    CorsConfigurationSource corsConfigurationSource() {
        CorsConfiguration configuration = new CorsConfiguration();
        configuration.setAllowedOrigins(Arrays.asList("http://localhost:3010"));
        configuration.setAllowedMethods(Arrays.asList("GET", "POST"));
        configuration.setAllowCredentials(true);
        configuration.addAllowedHeader("Authorization");
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        source.registerCorsConfiguration("/**", configuration);
        return source;
    }

    @Override
    protected void configure(HttpSecurity http) throws Exception {

        http
                .cors()
                .and()
                .sessionManagement()
                .sessionCreationPolicy(SessionCreationPolicy.STATELESS)
                .and() …
Run Code Online (Sandbox Code Playgroud)

java spring spring-security spring-boot auth0

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

Auth0和React的CORS问题

我目前正在尝试在我的NodeJS + React App中实现Auth0.虽然我有一个很大的问题,但本教程非常有用且有用.每当我尝试通过Auth0登录/注册时,我都会得到

XMLHttpRequest无法加载 https://XYZ.eu.auth0.com/usernamepassword/login.对预检请求的响应未通过访问控制检查:请求的资源上不存在"Access-Control-Allow-Origin"标头.因此不允许来源' http:// localhost:3000 '访问.对预检请求的响应未通过访问控制检查:请求的资源上不存在"Access-Control-Allow-Origin"标头.因此不允许来源' http:// localhost:3000 '访问.

所以我粗略地理解这意味着什么.但我只是不知道在哪里设置所需的选项以允许此请求到Auth0.在服务器端?在浏览器代码中?

最好的祝福


编辑:正如RodrigoLópezDato指出的那样,我可以在我的应用程序中编写Origins:https://manage.auth0.com/#/applications

我在本地开发时应该把它放在那里?我的IP?

node.js cors reactjs auth0

10
推荐指数
2
解决办法
8849
查看次数

Auth0 - 禁用用户配置文件缓存

如何在 Auth0 中禁用用户配置文件缓存?

我已经能够更新用户配置文件 user_metadata。但问题是,Auth0 缓存了用户配置文件,因此只有在用户注销然后重新登录后才会看到此更新。这是一个问题,因为我不想总是强迫用户每次打开我的应用程序时都登录。我希望应用程序会记住会话,但在应用程序打开时仍会查询用户信息数据。缓存使这成为不可能。

显然,这是由于“用户配置文件:深入详细信息”中记录的 auth0 缓存所致。

但是,同一份文件指出“您可以通过 Auth0 仪表板或管理 API 删除用户的缓存配置文件。” 我希望在更新 user_metadata 时删除 userinfo 缓存(最好是针对特定用户),但我一直无法在 Management API 中找到有关如何删除 userinfo 缓存的任何信息。

javascript caching auth0

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