Я строю бот Microsoft Teams, использующий агент Microsoft 365 SDK (не старый Bot Framework SDK). < /p>
Бот использует команды SSO: < /p>
Когда пользователь устанавливает бот в команды, они видят входную карту, к карте Authure Aps, и к приложению. Весь этот процесс входов и выхода обрабатывается самим SDK с тех пор, как я включил AutoSignin. /> проблема < /strong> < /p>
Производительный развод Повторно переоценивает ту же учетную запись.https://login.microsoftonline.com/{tena ... 2.0/logout) только очищает сеанс браузера. Команды Desktop/Mobile по -прежнему молча входят в систему с учетной записью кэшированной."AgentApplication": {
"UserAuthorization": {
"DefaultHandlerName": "auto",
"Handlers": {
"auto": {
"Settings": {
"AzureBotOAuthConnectionName": "teams_sso",
"OBOConnectionName": "ServiceConnection"
}
}
}
}
},
"Connections": {
"ServiceConnection": {
"Settings": {
"AuthType": "FederatedCredentials",
"AuthorityEndpoint": "https://login.microsoftonline.com/{{TenantId}}",
"ClientId": "{{ClientId}}",
"FederatedClientId": "{{ManagedIdentityClientId}}",
"Scopes": [
"https://api.botframework.com/.default"
]
}
}
},
< /code>
подписать код: < /p>
await UserAuthorization.SignOutUserAsync(turnContext, turnState, cancellationToken: cancellationToken);
< /code>
Я попытался очистить сеанс Azure AD после подписки, но он только очищает сеанс браузера. Это работает, как и ожидалось в Teams Web, но в командах настольных и мобильных устройств процесс входа в систему обрабатывается клиентом команд, поэтому пользователь молча переоценивается с предыдущей учетной записью. Однако, поскольку поток входа полностью обрабатывается внутренне с помощью агента Microsoft 365 SDK, я не уверен, где или как указать эту подсказку = select_account параметр в коде бота.
var card = new HeroCard
{
Text = "You have been signed out from the app. To fully clear your Microsoft login session, click below:",
Buttons = new List
{
new CardAction(ActionTypes.OpenUrl, "Sign out completely", value: logoutUrl)
}
};
logger.LogInformation($"User signed out. Logout URL: {logoutUrl}");
await turnContext.SendActivityAsync(MessageFactory.Attachment(card.ToAttachment()), cancellationToken);
}
Я строю бот Microsoft Teams, использующий агент Microsoft 365 SDK (не старый Bot Framework SDK). < /p> Бот использует команды SSO: < /p> [list] [*] Когда пользователь устанавливает бот в команды, они видят входную карту, к карте Authure Aps, и к приложению. Весь этот процесс входов и выхода обрабатывается самим SDK с тех пор, как я включил AutoSignin. /> проблема < /strong> < /p>
Производительный развод Повторно переоценивает ту же учетную запись.https://login.microsoftonline.com/{tenantId}/oauth2/v2.0/logout) только очищает сеанс браузера. Команды Desktop/Mobile по -прежнему молча входят в систему с учетной записью кэшированной."AgentApplication": { "UserAuthorization": { "DefaultHandlerName": "auto", "Handlers": { "auto": { "Settings": { "AzureBotOAuthConnectionName": "teams_sso", "OBOConnectionName": "ServiceConnection" } } } } }, "Connections": { "ServiceConnection": { "Settings": { "AuthType": "FederatedCredentials", "AuthorityEndpoint": "https://login.microsoftonline.com/{{TenantId}}", "ClientId": "{{ClientId}}", "FederatedClientId": "{{ManagedIdentityClientId}}", "Scopes": [ "https://api.botframework.com/.default" ] } } }, < /code> подписать код: < /p> await UserAuthorization.SignOutUserAsync(turnContext, turnState, cancellationToken: cancellationToken); < /code> Я попытался очистить сеанс Azure AD после подписки, но он только очищает сеанс браузера. Это работает, как и ожидалось в Teams Web, но в командах настольных и мобильных устройств процесс входа в систему обрабатывается клиентом команд, поэтому пользователь молча переоценивается с предыдущей учетной записью. Однако, поскольку поток входа полностью обрабатывается внутренне с помощью агента Microsoft 365 SDK, я не уверен, где или как указать эту подсказку = select_account параметр в коде бота. [/list] public async Task OnSignOutMessage(ITurnContext turnContext, ITurnState turnState, CancellationToken cancellationToken) { await UserAuthorization.SignOutUserAsync(turnContext, turnState, cancellationToken: cancellationToken);
var tenantId = botOptions.TenantId; var logoutUrl = $"https://login.microsoftonline.com/{tenantId}/oauth2/v2.0/logout";
var card = new HeroCard { Text = "You have been signed out from the app. To fully clear your Microsoft login session, click below:", Buttons = new List { new CardAction(ActionTypes.OpenUrl, "Sign out completely", value: logoutUrl) } };
logger.LogInformation($"User signed out. Logout URL: {logoutUrl}"); await turnContext.SendActivityAsync(MessageFactory.Attachment(card.ToAttachment()), cancellationToken); }