在 Auth0 中以编程方式进行身份验证



我正在设置 cypress.io 来测试反应应用程序。我正在尝试使用 Auth0 Lock 以编程方式进行身份验证,因此我不必测试他们的 UI。以下是步骤:

  1. 开机自检至 https://[auth0-domain].com/用户名密码/登录

    client_id: "",
    client_secret: "",
    audience: "audience",
    redirectUri: "http://[auth0-domain].com:8383/callback",
    scope: "openid email crud:all",
    protocol: "oauth2",
    sso: true,
    username: "",
    password: "",
    connection: "conn",
    tenant: "tenant",
    popup: false,
    
  2. 收集返回的表单数据

  3. POST to https://[auth0-domain].com/login/callback

    wa=wsignin1.0&wresult=token&wctx=metastuff

第一步有效,但在第三步中,我可以发布到登录/回调,但我收到一个带有此错误消息的 HTML 页面:

Looks like something went wrong! There could be a misconfiguration in the system or a service outage. We track these errors automatically, but if the problem persists feel free to <a href="https://auth0.com/support" target="_new">contact us</a> with this tracking id: <b>e88e08e43b7cdee78458</b>.<br/>Please try again.

我想知道是否有 Auth0 阻止我这样做,或者我没有发送正确的数据/标头。

我最终使用了调用auth0回调的auth0-js模块。然后我使用"应该"来等待本地存储被设置:

import auth0 from 'auth0-js';
import url from 'url';
Cypress.Commands.add('login', () => {
const auth = new auth0.WebAuth({
audience: 'http://audience',
domain: 'domain.auth0.com',
clientID: 'qqqqqqqqqqqq',
redirectUri: 'http://localhost/callback',
responseType: 'token id_token',
scope: 'openid email profile name username groups roles',
sso: true
});
auth.login({username: 'username', password: 'pass'});
cy.window().its('localStorage.user_profile').should('exist')
});

最新更新