После двух месяцев экспериментов с Аутентификацией команд через adal. js и msal. js и неудачей я близок к тому, чтобы сдаться. Поэтому мне очень нужна ваша помощь.
По сути, мне нужно «беззвучно» аутентифицировать вошедшего в систему пользователя Команды для моего собственного веб-сайта (вкладки) внутри моего приложения, созданного с помощью App Studio. Это связано с тем, что я могу использовать данные токена аутентификации для входа на свой собственный веб-сайт.
До сих пор мне удавалось работать только с msal. js и всплывающим окном, которое, по словам разработчика Teams, которое я спросил, не подходит для go. Понятно, так как я не могу использовать метод всплывающих окон в клиенте команд, потому что он блокируется.
Я пробовал этот метод входа в систему без вывода сообщений (https://github.com/OfficeDev/microsoft-teams-sample-complete-node/blob/master/src/views/tab-auth/silent.hbs), который был рекомендован мне. К сожалению, это не сработало. Все, что я получаю, это ошибка «Продление сбоя: операция обновления токена не выполнена из-за тайм-аута».
Поскольку всплывающий вариант msal. js (Node.js Azure Пример быстрого запуска), который я использовал до того, как работал в веб-браузере, я не думаю, что конфигурация Azure App неверна ,
Это мой код:
// onLoad="prepareForm()"
<!--- Import package for authentication information in Teams/Azure--->
<script src="https://secure.aadcdn.microsoftonline-p.com/lib/1.0.15/js/adal.min.js" integrity="sha384-lIk8T3uMxKqXQVVfFbiw0K/Nq+kt1P3NtGt/pNexiDby2rKU6xnDY8p16gIwKqgI" crossorigin="anonymous"></script>
<script src="https://statics.teams.microsoft.com/sdk/v1.4.2/js/MicrosoftTeams.min.js" crossorigin="anonymous"></script>
<script language="JavaScript">
let config = {
clientId: "1402f497-d6e8-6740-9412-e12def41c451", // I've changed it for this stackoverflow post
redirectUri: "https://myredirect.com", // I've changed it for this stackoverflow post
cacheLocation: "localStorage",
navigateToLoginRequestUrl: false,
};
microsoftTeams.initialize()
/// START Functions for Teams
function getTeamsContext() {
microsoftTeams.getContext(function(context) {
startAuthentication(context);
});
}
function startAuthentication(teamsContext) {
if (teamsContext.loginHint) {
config.extraQueryParameters = "scope=openid+profile&login_hint=" + encodeURIComponent(teamsContext.loginHint);
} else {
config.extraQueryParameters = "scope=openid+profile";
}
let authContext = new AuthenticationContext(config);
user = authContext.getCachedUser();
if (user) {
if (user.profile.oid !== teamsContext.userObjectId) {
authContext.clearCache();
}
}
let token = authContext.getCachedToken(config.clientId);
if (token) {
console.log(token)
// Get content of token
} else {
// No token, or token is expired
authContext._renewIdToken(function (err, idToken) {
if (err) {
console.log("Renewal failed: " + err);
// Some way of logging in via Popup or similiar
} else {
console.log(idToken)
// Get content of token
}
});
}
}
/// END Functions for Teams
// initialized on page load!
function prepareForm() {
getTeamsContext();
document.InputForm.password.focus()
}
<script/>
Это мои вопросы:
- Что вызывает эту ошибку?
- Как мне аутентифицировать токен на манипуляциях и это команды или Azure? (Есть ли у adal. js какие-либо функции для этого?)
- Как мне войти в систему, если тихая аутентификация не удалась и всплывающие окна заблокированы? Существует ли веб-сайт для проверки подлинности, предоставленный командами, который возвращает токен?
- Существуют ли какие-либо рабочие примеры автоматической проверки подлинности, которые отсутствуют на официальном веб-сайте Microsoft? (Я их не понимаю.)