我正在开发一个使用 auth0 进行身份验证的 Angular2 应用程序。我使用 auth0 锁定小部件来验证用户。

现在,我想使用 auth0-js 而不是锁定小部件进行身份验证。我按照 this 指南将 auth0-js 添加到应用程序中。

添加 auth-js 后,当新用户尝试登录应用时,Auth0 会向用户显示以下同意屏幕。

登录时Auth0请求同意访问tenent-LMLPHP

我希望用户能够直接访问我的应用程序,而无需接受同意屏幕。此对话框中提出的同意问题可能会让用户感到困惑,因为它提到了租户。

找解决办法的时候,各处提到的解决办法是把客户端做成first party客户端。但是,我在管理控制台中找不到任何地方使客户端成为 first party 客户端。

如何禁用此同意屏幕?

以下是我在应用程序中使用的 auth-js 配置。

auth0 = new auth0.WebAuth({
    clientID: 'my_client_id',
    domain: 'my_domain.auth0.com',
    responseType: 'token id_token',
    audience: 'https://my_domain.auth0.com/userinfo',
    redirectUri: window.location.origin + '/auth_loading',
    scope: 'openid'
});

最佳答案

Auth0 Dashboard 中,在 APIs -> Auth0 Management API -> Settings (tab)

登录时Auth0请求同意访问tenent-LMLPHP

如果您在 Dashboard 中为自己定义的资源 API 使用特定的 audience,则该特定 API 有一个类似的 Allow Skipping User Consent 切换。用那个。 audience 指定访问 token 的目标 API。如果您不想调用特定的 API,请将其设置为 https://my_domain.auth0.com/userinfo

关于。关于 First Party 的问题。如果您在 Auth0 Dashboard 中创建了客户端,则默认情况下它是 Firsty Party。只有第一方客户端可以跳过同意对话框,假设他们试图代表用户访问的资源服务器启用了“允许跳过用户同意”选项。 Auth0 仪表板没有为此提供标志,但如果您使用 Auth0 Management API v2 Get Clients 端点,那么您将看到为您的客户端列出的标志( bool 值)值,例如。

"is_first_party": true

有关详细信息,请参阅 https://auth0.com/docs/api/management/v2#!/Clients/get_clients

最后,请注意以下几点: https://auth0.com/docs/api-auth/user-consent#skipping-consent-for-first-party-clients - 特别注意在 localhost 上不能跳过同意。根据文档(上面的链接),在开发过程中,您可以通过修改/etc/hosts 文件(Windows 和基于 Unix 的操作系统均支持该文件)以添加如下条目来解决此问题:
127.0.0.1       myapp.dev

关于登录时Auth0请求同意访问tenent,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49091827/

10-12 18:44