В настоящее время я создаю навык Alexa с поддержкой Azure функций (. NET Core / C#) и Azure AD B2 C для аутентификации.
Для начальной настройки: Я использовал в основном использованные инструкции, найденные в этой статье . Поскольку статья была написана пару лет назад go, мне пришлось внести несколько изменений. В итоге я получил следующую конфигурацию:
Azure Active Directory B2 C
Как я уже говорил, мы используем AAD B2 C для аутентификации. Пользователи связанных приложений могут зарегистрироваться и войти в приложение React. Идея состоит в том, чтобы предоставить альтернативный интерфейс для указанных пользователей с помощью Alexa намерений + высказываний.
Я создал приложение для Alexa в AAD B2 C со следующими настройками:
Свойства
Ключи
Я сгенерировал один Ключ приложения , который я использую в качестве Секрета в Связи учетной записи раздел в консоли разработчика Alexa.
Во многих примерах в Интернете упоминается установка здесь явной даты окончания срока действия в 1 или 2 года; тем не менее, я не представлен ни с какими опциями вообще (то есть без опциона на истечение срока действия), только код. Может ли это быть частью проблемы ???
Доступ к API
Для доступа к API я должен ввести здесь записи API:
- Тот, который использует
user_impersonation
область действия, упомянутая выше. - Второй, озаглавленный «Доступ к профилю пользователя», использует:
- Получить id_token для пользователей (openid)
- Получить идентификатор обновления для пользователей (offline_access)
AAD B2 C Поток пользователей
Используемый мной поток пользователей позволяет регистрироваться и выполнять вход, он использует следующее конфигурация:
Свойства
Mis c
- Включить JavaScript принудительное использование макета страницы (предварительный просмотр): Вкл
Время жизни токена
- Время жизни токена доступа и идентификатора (минут): 60
- Refre sh Время жизни токена (дни): 14
- Refre sh Время жизни скользящего окна токена: «Ограничено».
- Продолжительность жизни (дни): 90
Настройки совместимости токена
- Эмитент (iss) претензия:
https://<domain>/<b2c-tenant-guid>
* 110 5 * - Тема (под) утверждение: ObjectID
- Заявка, представляющая поток пользователя: tfp
Поведение сеанса
- Время жизни сеанса веб-приложения (минуты ): 1440
- Тайм-аут сеанса веб-приложения: переходящий
- Конфигурация единого входа: Арендатор
- Требуется идентификатор токена в запросах на выход из системы: Нет
Azure Промежуточное программное обеспечение аутентификации функции
Для уровня аутентификации в функции Azure я использую метод, описанный в статье, упомянутой выше .
Alexa Консоль разработчика
Что касается Alexa, у меня есть очень простая настройка навыков со следующими настройками:
Конечная точка
Моя конечная точка использует HTTPS опция с областью по умолчанию, установленной на полностью определенную конечную точку HTTPS функции-обработчика моего Azure приложения функции.
Сертификат, установленный на "Моя конечная точка разработки, является поддоменом домена, который имеет подстановочный знак ... "
Связывание учетной записи
Настройки привязки учетной записи описаны ниже:
- Разрешено ли использование для создания учетной записи или ссылки на ...: Включено
- Разрешить пользователям включать навык без привязки к учетной записи: Включено
- Разрешить пользователям связывать свою учетную запись с вашим навыком в приложении или на веб-сайте: Выключено
- Предоставление кода авторизации: Включено
- URI авторизации:
https://myorg.b2clogin.com/myorg.onmicrosoft.com/oauth2/v2.0/authorize?p=<sign-in-user-flow-policy-name>
- URI токена доступа:
https://myorg.b2clogin.com/myorg.onmicrosoft.com/oauth2/v2.0/token?p=<sign-in-user-flow-policy-name>
- Ваш идентификатор клиента: AAD B2 C GUID приложения
- Ваш секрет: Ключ Сгенерировано в настройках приложения в AAD B2 C для моего приложения Alexa Skill (упомянуто в информации о настройке AAD B2 C выше).
- Ваша схема аутентификации: HTTP Basi c
- Область действия: openid и https://myorg.onmicrosoft.com/alexa/user_impersonation
- Список доменов: login.microsoftonline.com и myorg.b2clogin.com Примечание: Это, вероятно, неправильно, так как я не знал, что здесь поставить. В приведенной выше статье этот параметр вообще не упоминается
- Время истечения токена доступа по умолчанию: 3600
Примечание: URL-адреса перенаправления Alexa в нижней части - это то, что я вставил AAD B2 C для раздела URL ответа .
Проблема
Теперь для самой важной части Проблема . Кажется, сначала все работает ... Я могу go на alexa.amazon.com и использовать Ссылка на учетную запись (которая перенаправляет меня на и с моего экрана входа, управляемого AAD B2 C) ). Как только я связываю учетные записи, я могу успешно использовать высказывание и получить ответ.
Проблемы начинаются, когда я жду час (я полагаю, что это час). Попытка инициировать намерение через час приводит к ошибке на стороне приложения Azure Function, когда он пытается проверить токен аутентификации.
Может кто-нибудь дать мне несколько советов относительно того, что я мог неправильно настроить или хотя бы некоторые вещи, которые я должен изучить? Как я упоминал в начале этого вопроса, многие из ссылок, которые я нахожу в Интернете, устарели и не охватывают все настройки, которые я ожидаю использовать. Многие из них все еще используют авторитет microsoftonline.com против b2clogin.com.
На первый взгляд, я предполагаю, что проблема заключается в том, что навык Alexa не может обновить sh свой токен после истекает через час. Что мне нужно сделать, чтобы обеспечить правильное обновление?