标签: auth0

带有 Rails API 的 Auth0

我没有特定的技术问题,但在理解使用 Auth0 进行身份验证然后使用返回的配置文件访问 rails API 的体系结构时遇到了一般问题。

我在 React Native 中使用 Auth0.Lock 并且可以成功注册并登录到我的 React Native 应用程序并存储返回的配置文件和令牌。

在 Rails 方面,我根据实现 JWT 身份验证的说明创建了一个 API 并设置了 Knock ( https://github.com/nsarno/knock )。

我不明白的是我在 Rails 中的用户模型和我在 Auth0 中的数据库之间的链接。Auth0 文档或 Knock 文档都不清楚这种关联是如何发生的。

谢谢克雷格

ruby-on-rails auth0

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

jackson.databind 没有这样的方法错误

我正在使用auth0-java客户端库与auth0 v2服务交互,我的代码在我的开发环境中编译并运行良好,但是当我在另一个测试环境中部署该构建时,它会引发以下异常:

java.lang.NoSuchMethodError:com.fasterxml.jackson.databind.ObjectMapper.readerFor(Lcom/fasterxml/jackson/databind/JavaType;)Lcom/fasterxml/jackson/databind/ObjectReader;
    at com.auth0.json.mgmt.users.UsersPageDeserializer.getArrayElements(UsersPageDeserializer.java:52)
    at com.auth0.json.mgmt.users.UsersPageDeserializer.deserialize(UsersPageDeserializer.java:30)
    at com.auth0.json.mgmt.users.UsersPageDeserializer.deserialize(UsersPageDeserializer.java:15)
    at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:3562)
    at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:2597)
    at com.auth0.net.CustomRequest.parseResponse(CustomRequest.java:63)
    at com.auth0.net.BaseRequest.execute(BaseRequest.java:37)
    at com.myapp.security.Auth0Service.getUserByEmail(Auth0Service.java:246)
    at com.myapp.security.Auth0Service.checkForExsistingAuth0Account(Auth0Service.java:266)
    at com.myapp.security.AdminUILayout.lambda$launchProgressUpdater$0(AdminUILayout.java:293)
at java.lang.Thread.run(Thread.java:745)
Run Code Online (Sandbox Code Playgroud)

我已经通过几个stackover流的问题,如走 并试图清理.m2/repository/com/fasterxml该测试环境的文件夹,但cloudn't这里解决了没有这样的方法错误是我的POM文件及以下相关代码给出:

代码

public User getUserByEmail(String email){
        UserFilter filter = new UserFilter();
        filter.withQuery(email);
        Request<UsersPage> request = mgmt.users().list(filter);
        try {
            UsersPage response = request.execute();
            for (User u:response.getItems()) {
                if (u.getEmail().equals(email)) {
                    return u;
                }
            }
        } catch (APIException exception) {
            // api error
            System.out.println("APIException:::::"+exception.getDescription());
        } catch (Auth0Exception exception) { …
Run Code Online (Sandbox Code Playgroud)

java json jackson maven auth0

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

在 Couchbase Sync Gateway 中,如何确保隐式 OpenId 隐式流程有效?

我正在开发一个使用 OpenId 连接隐式流与 Auth0 提供程序的应用程序。我已经能够从 Auth0 获取 JWT 令牌,现在想在 Couchbase 同步网关中启动一个会话。

为此,我做了一个 POST /{db}/_session,返回一个带有SyncGatewaySessionid的 cookie 。据我了解,这应该与同步网关 Web 界面中的用户相关联......但是我没有看到创建用户。

那么,有没有办法查看我使用哪个用户进行复制?

或者确保同步网关正确读取我的 JWT 令牌的方法?

编辑当我通过在我的配置文件中设置以下内容来禁用 GUEST 用户时,

        "users": {
            "GUEST": {
                "disabled": true,
                "admin_channels": [
                    "*"
                ]
            }
        }
Run Code Online (Sandbox Code Playgroud)

我的 OpenId 似乎无法访问同步。我想这意味着我在不知不觉中使用了 GUEST 用户。

所以。如何将我的 OpenID 用户创建为与 GUEST 用户不同的用户?

couchbase-sync-gateway openid-connect auth0

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

Auth0:如何在托管登录页面中启用静默身份验证?

我正在使用 Auth0 的托管屏幕。我希望以下场景起作用-

  • 假设我有 2 个应用程序 - app1 和 app2。
  • 通过在 app1 中提供电子邮件+密码登录的用户之一。
  • 然后用户导航到 app2。
  • Auth0 检测到用户已经登录,因此它将用户重定向回 app2,而无需再次登录。

但我面对的是这个画面——

Auth0 锁屏

我怎样才能保存我的用户这个额外的点击?如何实现静默身份验证?我知道你要传递prompt=none/authorizeAPI,但是因为我没有手动调用API,如何让我的锁通话/authorizeprompt=none

oauth single-sign-on oauth-2.0 auth0

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

在 Promise 中包装 Auth0 的 parseHash 函数

auth0.js有一个函数,用于解析 URL 哈希片段并从中提取认证结果。我将此函数包装在一个名为loadSession如下的函数中:

public loadSession(): void {
  this.auth0.parseHash((err, authResult) => {
    if (authResult) {
      window.location.hash = '';
      localStorage.setItem('token', authResult.accessToken);
      // TODO (1)
    } else if (err) {
      // TODO (2)
    }
  });
}
Run Code Online (Sandbox Code Playgroud)

如上所示,parseHash将回调函数作为参数,我无法控制它。我想loadSession返回一个在上面Promise解决// TODO (1)和拒绝的问题// TODO (2)。这样我可以做到obj.loadSession().then(() => { // do something if successful }).catch((err) => { // raise error if not })

javascript asynccallback promise typescript auth0

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

如何将 vuejs 路由与历史回退和 expressjs 路由一起使用

我已经被困在这个问题上好几个星期了,我想不通。它让我发疯......我读过很多教程,听起来它应该起作用!

我有一个 expressjs 服务器设置和一个 vuejs 应用程序。我希望能够使用历史浏览器模式为 vuejs 路由提供服务,我还希望能够为我的 api 层设置服务器端路由。

如果我禁用历史模式,一切正常 - 但我需要启用历史模式,以便我可以使用 auth0 库和回调。回调不允许在 url 中使用 #。

这是我的代码:

const express = require('express');
const path = require('path');
const bodyParser = require('body-parser');
const logger = require('morgan');
const history = require('connect-history-api-fallback');

const app = express();

app.use(require('connect-history-api-fallback')())
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(history({
  verbose: true
}));

app.get('/api', (req, res) => res.send('Hello World!'))
app.use('/', express.static(path.join(__dirname, 'dist')));

var port = process.env.PORT || 8080;
app.listen(port);
console.log('server started '+ port);
Run Code Online (Sandbox Code Playgroud)

对于上面的代码,vuejs 应用程序位于 /dist 下,并且该应用程序的所有路由都有效。但是当我尝试点击 /api 时 - 它也被重定向到 vuejs 应用程序。 …

routing callback express vue.js auth0

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

带有 React Native 的 Auth0 身份验证 API

我目前正在开发一个反应原生的移动应用程序,并使用 Auth0 进行用户管理。我正在使用我自己的登录、注册和忘记密码屏幕,而不是他们的锁定小部件。我能够通过调用他们的身份验证 api 以及使用他们的管理 api 进行帐户链接来实现无密码短信和电子邮件。但是,一旦用户已经拥有帐户,我就很难通过 api 使用他们的电子邮件和密码对用户进行身份验证。在我看来,应该有一个单一的端点,您可以在其中将电子邮件和密码包含在请求正文中。我想知道是否有人可以帮助我了解如何使用 auth0 的 api 简单地登录用户。提前致谢。

auth0 react-native

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

不建议使用Auth0模拟。我应该改用什么?

在我们的网站上,管理员应该能够以用户(客户端)的身份查看网站。我计划为此使用Auth0,只是注意到他们的模拟功能已被弃用。

我可以在Redux中强制某些登录标志,以允许管理员以用户身份查看,但是,要从API获取用户的任何数据,我要从登录期间Auth0生成的访问令牌中获取用户ID。因此,API将仅从当前登录的用户访问令牌中获取数据。

有人知道有什么方法可以模拟用户吗?我认为通过解析访问令牌中的用户ID来获取该用户的任何数据,从而对我的API施加了限制,如果我错了,请更正我。

我能想到的唯一方法是,如果管理员“以用户身份查看”,则可以在API调用中传递用户的ID。在控制器中,我可以检查用户ID字段是否存在并使用它代替当前登录的用户,但是我认为传递用户ID并不是一个好主意。也许我可以在每个请求上添加一个中间件,并且如果该用户ID在API调用中存在,我可以检查该用户的角色以确保它是可以验证请求的管理员。

你怎么看?关于此方法还有其他想法/批评吗?

谢谢!!

api impersonation access-token reactjs auth0

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

如何在浏览器中为 React SPA 保留 Auth0 登录状态

目前,当我创建路由时,我会检查 Auth0 方法 - isAuthenticated() - 以确定是否返回受保护的页面或重定向到登录。但是,此状态仅存在于内存中,并且不会在浏览器刷新时将用户保留在其页面上,我希望这样做。

这是一个 React/RR4/React Context 应用程序,我的 Auth0 方法列在 Auth.js(如下)中。

将登录状态存储在 localStorage 中是非常不可取的。如果我将 Auth0 令牌存储在 cookie 中,我不确定如何验证令牌,因为没有设置服务器验证。检查将启用安全数据持久性的正确条件是什么?

ProtectedRoutes.jsx:

   <Route
      exact
      key={route.path}
      path={route.path}
      render={() => (
        // CONDITION TO CHECK
        context.auth.isAuthenticated()
          ? (
            <div>
              <route.component />
            </div>
          ) : <Redirect to="/login" />
        )}
      />
Run Code Online (Sandbox Code Playgroud)

Auth.js(添加以供参考):

import auth0 from 'auth0-js';
import authConfig from './auth0-variables';

class Auth {
  accessToken;
  idToken;
  expiresAt;
  tokenRenewalTimeout;

  auth0 = new auth0.WebAuth({
    domain: authConfig.domain,
    clientID: authConfig.clientId,
    redirectUri: authConfig.callbackUrl,
    responseType: 'token id_token',
    scope: 'openid'
  });

  constructor() …
Run Code Online (Sandbox Code Playgroud)

authentication cookies reactjs auth0 react-router-v4

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

如何在电子应用程序中使用外部浏览器(chrome、firefox 等)实现 auth0 身份验证

我在我的电子应用程序中使用 auth0 身份验证。无论如何,我都没有使用电子应用程序的浏览器窗口。所以,我想在外部浏览器(chrome、Firefox 等)或安装的默认浏览器中打开我的 auth0 身份验证窗口。有什么办法吗?

auth0 electron

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