OAuthPrompt/SigniIn AzureAD 始终默认为 SSO 凭据。如何申请备用学分?
OAuthPrompt/SigniIn for AzureAD always defaults to SSO credentials. How to request for alternate creds?
我为客户制作了一个机器人。
目的是通过安全的 API.
运行 管理员命令
为此,他们需要
- 使用标准帐户登录团队
- 当他们执行管理命令时,bot 要求 OAuth 登录(连接设置为 AzureAD v2 模式)。
- 在门户中的团队/测试人员中,它从不要求提供凭据,它只是默认为登录用户。
如何让它始终只要求提供凭据?
一种方法是制作一个单独的 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)
我为客户制作了一个机器人。 目的是通过安全的 API.
运行 管理员命令为此,他们需要
- 使用标准帐户登录团队
- 当他们执行管理命令时,bot 要求 OAuth 登录(连接设置为 AzureAD v2 模式)。
- 在门户中的团队/测试人员中,它从不要求提供凭据,它只是默认为登录用户。
如何让它始终只要求提供凭据?
一种方法是制作一个单独的 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)