Auth0 запрашивает согласие на доступ к тененту при входе в систему

Я разрабатываю приложение Angular2, которое использует auth0 для аутентификации. Я использовал виджет блокировки auth0 для аутентификации пользователей.

Теперь я хочу использовать auth0-js вместо виджета блокировки для аутентификации. Я следовал этому руководству, чтобы добавить 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'
});

person Lahiru Chandima    schedule 04.03.2018    source источник


Ответы (1)


На Панель управления Auth0 в разделе APIs -> Auth0 Management API -> Settings (tab)

введите описание изображения здесь

Если вы используете определенный audience для API ресурсов, который вы сами определили на панели инструментов, то для этого конкретного API есть аналогичный переключатель Allow Skipping User Consent. Используйте это. audience указывает целевой API для вашего токена доступа. Если вы не хотите вызывать определенный API, оставьте значение https://my_domain.auth0.com/userinfo

Ре. вопрос о First Party. Если вы создали свой клиент на панели управления Auth0, то по умолчанию это Firsty Party. Только сторонние клиенты могут пропустить диалоговое окно согласия, если на сервере ресурсов, к которому они пытаются получить доступ от имени пользователя, включен параметр «Разрешить пропуск согласия пользователя». Панель управления Auth0 не предлагает флаг для этого, но если вы используете конечную точку API управления Auth0 v2 Get Clients, вы увидите значение флага (логическое) для вашего клиента, например.

"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 — в частности, обратите внимание, что согласие нельзя пропустить на локальном хосте. Согласно документам (ссылка выше), во время разработки вы можете обойти это, изменив файл /etc/hosts (который поддерживается как в Windows, так и в ОС на базе Unix), добавив запись, например следующую:

127.0.0.1       myapp.dev
person arcseldon    schedule 04.03.2018
comment
У меня включен Allow Skipping User Consent в API управления Auth0. У меня нет другого определенного API. Тем не менее появляется страница согласия. Кроме того, я заметил, что если я удаляю свойство audience в конструкторе auth0.WebAuth, согласие не запрашивается. Какова цель этого параметра audience? Ничего, если я удалю его? - person Lahiru Chandima; 04.03.2018
comment
@LahiruChandima Это также может произойти, если вы работаете в localhost. Возможно, вы захотите отредактировать файл /etc/hosts, чтобы сопоставить локальный хост с доменом, как показано здесь: auth0.com/docs/api-auth/ audience указывает целевой API для вашего токена доступа. Если вы не хотите вызывать определенный API, оставьте значение https://my_domain.auth0.com/userinfo. - person thameera; 04.03.2018
comment
спасибо @thameera - добавили пояснения в ответ. - person arcseldon; 04.03.2018
comment
@LahiruChandima - привет, теперь ответ (с правками) дает вам всю необходимую информацию? - person arcseldon; 04.03.2018
comment
@arcseldon Я думаю, что проблема должна была заключаться в том, что я тестировал localhost, как упоминала thameera. Но я не могу проверить это сейчас, потому что я удалил auth-js реализацию и решил придерживаться виджета блокировки. - person Lahiru Chandima; 04.03.2018
comment
Спасибо. Если бы вы могли отметить ответ как правильный (он включает в себя всю необходимую информацию), это было бы очень признательно :) - person arcseldon; 05.03.2018
comment
У меня включен параметр «Разрешить пропуск согласия пользователя» в API управления Auth0. Но когда я вхожу в систему с именем пользователя и паролем, он показывает ошибку МЫ ИЗВИНЯЕМСЯ, ЧТО-ТО ПОШЛО НЕПРАВИЛЬНО ПРИ ПОПЫТКЕ ВХОДИТЬ.. На вкладке «Консоль» Chrome ничего нет, но на вкладке «Сеть» есть запрос на аутентификацию со статусом 200 . Любые идеи? - person MillDol; 10.08.2018