OAuthPrompt/SigniIn AzureAD 始终默认为 SSO 凭据。如何申请备用学分?

OAuthPrompt/SigniIn for AzureAD always defaults to SSO credentials. How to request for alternate creds?

我为客户制作了一个机器人。 目的是通过安全的 API.

运行 管理员命令

为此,他们需要

  1. 使用标准帐户登录团队
  2. 当他们执行管理命令时,bot 要求 OAuth 登录(连接设置为 AzureAD v2 模式)。
  3. 在门户中的团队/测试人员中,它从不要求提供凭据,它只是默认为登录用户。

如何让它始终只要求提供凭据?

一种方法是制作一个单独的 AzureAD,但这需要客户再次为高级 AD 付费,以便能够将为管理员 API 定义的 AzureAD 角色分配给组而不是单个用户. 所以这不是一个很好的解决方案。

他们还可以将团队许可证添加到他们的管理员帐户,但这会破坏整个工作流程和拥有机器人的理由。因为他们必须打开浏览器并在团队中记录管理员凭据。

我希望这是可能的,否则我会非常难过,因为失去了一些令人惊叹的管理方案可能性。不幸的是,我们的 none 企业客户允许使用员工标准帐户触发各种管理员 API。

我不确定这是否完全回答了你的问题,我对你想要的东西有点困惑。但据我了解, 我在这里遵循了这个文档:https://docs.microsoft.com/en-us/microsoftteams/platform/bots/how-to/authentication/add-authentication?tabs=dotnet%2Cdotnet-sample

该示例有一个使用 azure ad 进行身份验证的机器人,它每次都会为我在团队中弹出 azure 登录 window。出现一个请登录按钮,然后你点击登录,它会弹出登录 window 然后你可以获得令牌并使用它来调用图形等

我对此进行了测试,当我与机器人交谈时,它总是要求我登录,所以希望这就是您要找的东西?如果没有,请指出缺少的部分,谢谢

编辑:说明适用于 aad v1 端点,但如果您想使用 v2 端点,则几乎相同。只需输入更少,您还需要输入您授予 api 权限的范围,例如 "User.Read User.ReadBasic.All etc etc"

更新 因此,经过进一步讨论,我明白了您的问题所在。您需要做的是以下内容。在机器人频道注册 -> 设置 -> 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)