标签: auth0

在 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
查看次数

如何在浏览器中为 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
查看次数

使用 PKCE 的授权代码流如何比没有 client_secret 的授权代码流更安全

很可能我误解了有关该主题的某些内容或在实施过程中遗漏了某些内容

我浏览了 Auth0 的文档,通过端点而不是 SDK 使用 PKCE 创建授权代码流,我看到我们提出了如下挑战和验证程序(来自 auth0 文档):

// Dependency: Node.js crypto module
// https://nodejs.org/api/crypto.html#crypto_crypto
function base64URLEncode(str) {
    return str.toString('base64')
        .replace(/\+/g, '-')
        .replace(/\//g, '_')
        .replace(/=/g, '');
}
var verifier = base64URLEncode(crypto.randomBytes(32));
Run Code Online (Sandbox Code Playgroud)

// Dependency: Node.js crypto module
// https://nodejs.org/api/crypto.html#crypto_crypto
function sha256(buffer) {
    return crypto.createHash('sha256').update(buffer).digest();
}
var challenge = base64URLEncode(sha256(verifier));
Run Code Online (Sandbox Code Playgroud)

然后我们将质询传递给授权端点,如下所示(来自 auth0 文档):

https://YOUR_DOMAIN/authorize?
    response_type=code&
    code_challenge=CODE_CHALLENGE&
    code_challenge_method=S256&
    client_id=YOUR_CLIENT_ID&
    redirect_uri=YOUR_CALLBACK_URL&
    scope=SCOPE&
    audience=API_AUDIENCE&
    state=STATE
Run Code Online (Sandbox Code Playgroud)

并将代码和验证器传递到令牌端点,如下所示(再次来自 auth0 文档):

curl --request POST \
  --url 'https://YOUR_DOMAIN/oauth/token' \
  --header 'content-type: application/x-www-form-urlencoded' \
  --data grant_type=authorization_code \ …
Run Code Online (Sandbox Code Playgroud)

openid authorization oauth-2.0 auth0 pkce

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

如何为 Angular 应用程序设置 Auth0 配置?

我正在尝试在Angular 应用程序中使用Auth0,但是当我在 [https://manage.auth0.com/dashboard/] 中设置配置时,单击“保存更改”按钮时出现此错误

错误!有效负载验证错误:“对象未通过属性itiate_login_uri 上绝对-https-uri-or-empty 格式的验证:https://localhost:4200/en/signin”(启动登录 uri,必须是 https)。

如何解决这个错误?

auth0 angular auth0-lock

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

如何使用 cypress 测试 auth0 登录 github

我正在尝试为我的 UI 编写 E2E 测试。为了登录,我使用 auth0 和社交登录 - Github。我尝试了几种方法来获取 Github 的访问令牌:

  1. 使用 cypress 按钮点击:

     cy.visit("https://myapp.io/login");
     cy.get('.auth0-lock-social-button-text').click();
     // Redirect me into Github login page.
     cy.get('#login_field').type(my_username);
     cy.get('#password').type(my_password);
     cy.get('.btn').click();
    
    Run Code Online (Sandbox Code Playgroud)

输出:网址:https: //github.com/session

页面内容:必须启用 Cookie 才能使用 GitHub。

  1. 使用 cy.request 登录
    这就是我陷入困境的地方。我想通过自己发送请求来模拟用户界面的流程,但我不知道该怎么做。我发现的所有示例都是他们在 auth0 用户管理器中手动创建的用户,他们通过传递 client_secret 和其他一些参数来接收数据。那不是我要找的。我试图说明用户看到的流程,或者至少说明后面发生的请求。

有人有解释如何做的例子吗?

注意:我不想使用,cypress-social-logins因为我需要它来通过 CI。

谢谢。

javascript oauth e2e-testing auth0 cypress

6
推荐指数
0
解决办法
381
查看次数