Мы разработали приложение Angular, развернутое в AKS, с включенным единым входом через приложение Microsoft Entra.
На уровне приложения мы обрабатываем вход в систему так же, как эта ссылка . Мы смогли интегрировать приложение в команды, используя эту ссылку, и успешно вошли в наше приложение в веб-приложении группы в браузере со всплывающим окном единого входа.
Та же конфигурация приложения, к которой мы пытаемся получить доступ к ней из настольного клиента Teams, всплывающее окно мигает и исчезает.
Пожалуйста, дайте мне знать, если мне не хватает каких-либо других конфигураций, которые не позволяют всплывающему окну для входа в систему, и помогите мне решить эту проблему в настольном клиенте MS Teams.
Статья об Entra Id, на которую вы ссылаетесь, совершенно неверна для Teams, поскольку она ориентирована на отдельный сценарий. Если пользователь переходит к полностью автономному «веб-представлению» вашей вкладки, это будет работать, но для интеграции с Teams вы находитесь в ограниченной среде iframe и не можете запустить всплывающее окно или подобное. Чтобы справиться с этим, Microsoft фактически предоставляет целую структуру для единого входа во вкладках — вам просто нужно следовать правильным указаниям. Начните здесь: https://learn.microsoft.com/en-us/microsoftteams/platform/tabs/how-to/authentication/tab-sso-overview, где представлено пошаговое руководство.
Спасибо за это, Хилтон. Я попытался использовать ту же логику кода для включения в свой угловой единый вход с использованием команд-js. это позволяет инициализировать, а getAuthToken() может возвращать токен в клиенте команд браузера веб-приложения. но вариант использования состоит в том, чтобы получить токен и заставить работать приложение в клиентском приложении для настольных компьютеров.
getAuthToken
работает в обоих местах (настольное приложение Teams — это просто веб-оболочка)
получение ошибки инициализации при попытке в настольном клиенте main.a14aafeb38e1cd70.js:1 ОШИБКА Ошибка: Необнаружено (в обещании): Ошибка: Ошибка инициализации. Родительское окно не найдено. Ошибка: Ошибка инициализации. Родительское окно не найдено. в Xy (main.a14aafeb38e1cd70.js:1:80950) в main.a14aafeb38e1cd70.js:1:82542
Также в веб-браузере генерируется токен клиента, но происходит сбой при вызове кода на стороне сервера. /getProfileOnBehalfOf для этого нам нужно настроить что-либо на уровне AAD или как нам получить этот метод.
Можете ли вы отправить код инициализации/getAuthToken? Похоже, вы вызываете getAuthToken без инициализации - это асинхронный метод.
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-to/…
предположительно this.getClientSideToken
звонит microsoftTeams.getAuthToken()
?
да, и смог успешно сгенерировать токен в качестве ответа 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?
ок, это отличная новость — похоже, ваша главная проблема решена! Ошибка 404 может быть одной из множества совершенно разных вещей, но теперь она на 100% принадлежит вашему собственному коду и не имеет ничего общего с «Командами» как таковыми. Чтобы решить эту проблему, я бы предложил запустить веб-браузер, открыть инструменты браузера и проверить вкладку «Сеть», чтобы увидеть полный адрес того места, где он пытается достичь конечной точки getProfileOnBehalfOf
.
Привет, Хилтон! Теперь мне удалось успешно войти в свое приложение с помощью клиентского приложения для настольного компьютера. используя сам getClientSideToken и не используя токен сервера в нашем случае. поэтому все методы, перенаправления и APIS обрабатываются на основе дизайна приложения на рабочем столе с использованием токена клиента, а также обрабатываются на уровне браузера с аутентификацией MSAL. Спасибо за вашу поддержку.
ок, приятно слышать
Без подробностей мы никак не сможем вам помочь. По сути, вы говорите: «Я сделал то, что мне сказали, но это не работает». У нас нет возможности проверить, сделали ли вы что-то не так или забыли что-нибудь.