OAuthPrompt / SigniIn для AzureAD всегда по умолчанию использует учетные данные SSO. Как запросить альтернативные кредиты? - PullRequest
1 голос
/ 25 мая 2020

Сделал бота для клиента. цель состоит в том, чтобы запускать команды администратора через защищенный API.

Для этого они должны быть

  1. вошли в команды, используя свою стандартную учетную запись
  2. Когда они выполнить команду администратора, бот запрашивает вход по OAuth (для подключения установлен режим AzureAD v2).
  3. В командах / тестировщиках на портале никогда не запрашиваются учетные данные, по умолчанию используется только зарегистрированный пользователь.

Как сделать так, чтобы он всегда запрашивал учетные данные?

Один из способов - создать отдельный AzureAD, но для этого потребуется, чтобы клиент снова заплатил за Premium AD, чтобы иметь возможность назначать роли AzureAD, определенные для API администратора, группам, а не отдельным пользователям. Так что это не очень хорошее решение.

Они также могут добавить командную лицензию в свою учетную запись администратора, но это нарушает весь рабочий процесс и вызывает необходимость иметь бота. потому что им нужно будет открыть браузер с учетными записями администратора, зарегистрированными для команд.

Я надеюсь, что это возможно, в противном случае мне очень грустно, что некоторые удивительные возможности сценария администратора потеряны. К сожалению, ни один из наших корпоративных клиентов не разрешил запускать различные административные API, используя стандартную учетную запись сотрудников.

1 Ответ

2 голосов
/ 27 мая 2020

Я не уверен, что это полностью отвечает на ваш вопрос, и меня немного смущает то, что вы хотите. но насколько я понимаю, я следовал этой документации здесь: https://docs.microsoft.com/en-us/microsoftteams/platform/bots/how-to/authentication/add-authentication?tabs=dotnet%2Cdotnet-sample

в образце есть бот, который аутентифицируется с помощью azure объявления, он выдает журнал azure в окно каждый раз для меня в командах. Появится кнопка входа в систему, затем вы щелкнете по входу, и появится окно входа в систему, в котором вы сможете получить токен и использовать его для вызова графика и т.д. c.

Я проверил это, и когда я разговариваю с ботом, он всегда просит меня войти в систему, так что, надеюсь, это то, что вы ищете? если нет, укажите, какая часть отсутствует, спасибо

edit: инструкции предназначены для конечной точки aad v1, но если вы хотите использовать конечную точку v2, она почти такая же. просто меньше набирать, вам также необходимо ввести области, которым вы даете разрешения api, например, «User.Read User.ReadBasi c .All et c et c»

Обновление Итак, после дальнейшего обсуждения я понял, в чем была ваша проблема. вам нужно сделать следующее. в регистрации каналов бота -> настройки -> oauthconnectionsettings, запишите свои значения и удалите.

Затем создайте новый с тем же именем и этими параметрами:

service provider: Oauth 2 Generic Provider
ClientID: same as before
secret: same as before. 
scope list delimiter: ' '
authorization URL Template: https://login.microsoftonline.com/common/oauth2/v2.0/authorize   (Replace Common with your tenant, just because i was using common)
Auth URL Query string template (this is key): ?client_id={ClientId}&response_type=code&redirect_uri={RedirectUrl}&scope={Scopes}&state={State}&prompt=login 
token url template: https://login.microsoftonline.com/common/oauth2/v2.0/token (again replace common with your tenant id)
token url query string tempalte : ?
token body template: code={Code}&grant_type=authorization_code&redirect_uri={RedirectUrl}&client_id={ClientId}&client_secret={ClientSecret}
refresh url template: https://login.microsoftonline.com/common/oauth2/v2.0/token  (again replace common with your tenant id)
refresh url query string: ?
refresh body template: refresh_token={RefreshToken}&redirect_uri={RedirectUrl}&grant_type=refresh_token&client_id={ClientId}&client_secret={ClientSecret}
scopes: Mail.Read Mail.Send User.Read User.ReadBasic.All  (or whatever your scopes are) 

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...