我正在开发一个使用 auth0 进行身份验证的 Angular2 应用程序。我使用 auth0 锁定小部件来验证用户。
现在,我想使用 auth0-js
而不是锁定小部件进行身份验证。我按照 this 指南将 auth0-js
添加到应用程序中。
添加 auth-js
后,当新用户尝试登录应用时,Auth0 会向用户显示以下同意屏幕。
我希望用户能够直接访问我的应用程序,而无需接受同意屏幕。此对话框中提出的同意问题可能会让用户感到困惑,因为它提到了租户。
找解决办法的时候,各处提到的解决办法是把客户端做成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)
下
如果您在 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/