Проблемы при интеграции приложения Angular с единым входом в клиенте Teams Desktop

Мы разработали приложение Angular, развернутое в AKS, с включенным единым входом через приложение Microsoft Entra.

На уровне приложения мы обрабатываем вход в систему так же, как эта ссылка . Мы смогли интегрировать приложение в команды, используя эту ссылку, и успешно вошли в наше приложение в веб-приложении группы в браузере со всплывающим окном единого входа.

Та же конфигурация приложения, к которой мы пытаемся получить доступ к ней из настольного клиента Teams, всплывающее окно мигает и исчезает.

Пожалуйста, дайте мне знать, если мне не хватает каких-либо других конфигураций, которые не позволяют всплывающему окну для входа в систему, и помогите мне решить эту проблему в настольном клиенте MS Teams.

Без подробностей мы никак не сможем вам помочь. По сути, вы говорите: «Я сделал то, что мне сказали, но это не работает». У нас нет возможности проверить, сделали ли вы что-то не так или забыли что-нибудь.

Salketer 18.03.2024 15:04
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Angular и React для вашего проекта веб-разработки?
Angular и React для вашего проекта веб-разработки?
Когда дело доходит до веб-разработки, выбор правильного front-end фреймворка имеет решающее значение. Angular и React - два самых популярных...
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Мы провели Twitter Space, обсудив несколько проблем, связанных с последними дополнениями в Angular. Также прошла Angular Tiny Conf с 25 докладами.
Угловой продивер
Угловой продивер
Оригинал этой статьи на турецком языке. ChatGPT используется только для перевода на английский язык.
Мое недавнее углубление в Angular
Мое недавнее углубление в Angular
Недавно я провел некоторое время, изучая фреймворк Angular, и я хотел поделиться своим опытом со всеми вами. Как человек, который любит глубоко...
Освоение Observables и Subjects в Rxjs:
Освоение Observables и Subjects в Rxjs:
Давайте начнем с основ и постепенно перейдем к более продвинутым концепциям в RxJS в Angular
2
1
89
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Статья об Entra Id, на которую вы ссылаетесь, совершенно неверна для Teams, поскольку она ориентирована на отдельный сценарий. Если пользователь переходит к полностью автономному «веб-представлению» вашей вкладки, это будет работать, но для интеграции с Teams вы находитесь в ограниченной среде iframe и не можете запустить всплывающее окно или подобное. Чтобы справиться с этим, Microsoft фактически предоставляет целую структуру для единого входа во вкладках — вам просто нужно следовать правильным указаниям. Начните здесь: https://learn.microsoft.com/en-us/microsoftteams/platform/tabs/how-to/authentication/tab-sso-overview, где представлено пошаговое руководство.

Спасибо за это, Хилтон. Я попытался использовать ту же логику кода для включения в свой угловой единый вход с использованием команд-js. это позволяет инициализировать, а getAuthToken() может возвращать токен в клиенте команд браузера веб-приложения. но вариант использования состоит в том, чтобы получить токен и заставить работать приложение в клиентском приложении для настольных компьютеров.

gayatri 22.05.2024 08:54
getAuthToken работает в обоих местах (настольное приложение Teams — это просто веб-оболочка)
Hilton Giesenow 23.05.2024 12:22

получение ошибки инициализации при попытке в настольном клиенте main.a14aafeb38e1cd70.js:1 ОШИБКА Ошибка: Необнаружено (в обещании): Ошибка: Ошибка инициализации. Родительское окно не найдено. Ошибка: Ошибка инициализации. Родительское окно не найдено. в Xy (main.a14aafeb38e1cd70.js:1:80950) в main.a14aafeb38e1cd70.js:1:82542

gayatri 24.05.2024 06:34

Также в веб-браузере генерируется токен клиента, но происходит сбой при вызове кода на стороне сервера. /getProfileOnBehalfOf для этого нам нужно настроить что-либо на уровне AAD или как нам получить этот метод.

gayatri 24.05.2024 06:35

Можете ли вы отправить код инициализации/getAuthToken? Похоже, вы вызываете getAuthToken без инициализации - это асинхронный метод.

Hilton Giesenow 24.05.2024 14:01

app.initialize().then(() => { console.info("Приложение успешно инициализировано"); this.getClientSideToken() .then((clientSideToken: Any) => { // console.info(clientSideToken); return this.getServerSideToken(clientSideToken); }) .then((profile: Any) => { console.info(profile); // return useServerSideToken(profile); }) .catch((error: Any) => { console. log(ошибка); }) }) Learn.microsoft.com/en-us/microsoftteams/platform/tabs/how-t‌​o/…

gayatri 27.05.2024 13:02

предположительно this.getClientSideToken звонит microsoftTeams.getAuthToken()?

Hilton Giesenow 27.05.2024 17:57

да, и смог успешно сгенерировать токен в качестве ответа microsoftTeams.getAuthToken() как в командах веб-браузера, так и в настольном приложении. теперь, когда getServerSideToken(clientSideToken: Any) { return new Promise((resolve, ignore) => { app.getContext().then((context: Any) => { fetch('/getProfileOnBehalfOf', { метод: 'post' , headers: { 'Content-Type': 'application/json' }, был вызван метод, ошибка 404 не найдена, пожалуйста, помогите мне с разъяснением, нужно ли нам определять какую-либо конфигурацию на уровне приложения AAD?

gayatri 28.05.2024 05:43

ок, это отличная новость — похоже, ваша главная проблема решена! Ошибка 404 может быть одной из множества совершенно разных вещей, но теперь она на 100% принадлежит вашему собственному коду и не имеет ничего общего с «Командами» как таковыми. Чтобы решить эту проблему, я бы предложил запустить веб-браузер, открыть инструменты браузера и проверить вкладку «Сеть», чтобы увидеть полный адрес того места, где он пытается достичь конечной точки getProfileOnBehalfOf.

Hilton Giesenow 28.05.2024 10:00

Привет, Хилтон! Теперь мне удалось успешно войти в свое приложение с помощью клиентского приложения для настольного компьютера. используя сам getClientSideToken и не используя токен сервера в нашем случае. поэтому все методы, перенаправления и APIS обрабатываются на основе дизайна приложения на рабочем столе с использованием токена клиента, а также обрабатываются на уровне браузера с аутентификацией MSAL. Спасибо за вашу поддержку.

gayatri 28.05.2024 15:08

ок, приятно слышать

Hilton Giesenow 28.05.2024 19:34

Другие вопросы по теме