【问题标题】:How to authenticate using Azure AD token using identity server 3 and microsoft teams app如何使用身份服务器 3 和 microsoft 团队应用程序使用 Azure AD 令牌进行身份验证
【发布时间】:2021-05-06 12:39:14
【问题描述】:

我们使用自定义 idp(身份服务器 3)对系统上的用户进行身份验证。现在我需要实现 Azure AD 身份验证。我尝试将 Azure AD 添加为外部提供程序,它在浏览器上运行良好,但在 MS 团队应用程序上,它无法正常工作,因为 Microsoft 团队应用程序在 iframe 中打开,而 azure Ad 无法在该应用程序上运行。 我实现了 Microsoft msal.js 库来使用 Azure AD 进行身份验证。我能够在前端进行身份验证并获取令牌。但是如何将该令牌传递给身份服务器 3 并使用我自己的身份服务器对用户进行身份验证。

【问题讨论】:

  • 不完全确定您的设置是什么。我是否理解正确 - 您拥有对用户进行身份验证的 IS3,您想使用 AzureAD 作为您的 IdP,并且您希望能够在通过 IS3 登录时使用 MSTeams,对吗?使用 AzureAD 作为 IS3 的 IdP 应该很容易(网上有关于如何操作的教程)。
  • 我有一个 IS3 正在对用户进行身份验证。我想添加对用户通过 Microsoft 帐户登录的支持,但我将继续使用 IS3 作为我的 idp。我已将 Azure AD 添加为 IS3 中的外部提供程序,并且它在 Web 上运行良好。但是在 Ms Teams 应用程序中,它不起作用,因为团队应用程序在 iframe 上运行,并且 Microsoft 不允许在 iframe 中进行身份验证。我怎样才能让它工作。
  • @Garv 以下任何答案对您有帮助吗?还是您仍然面临这个问题?
  • 以下答案都与在前端进行身份验证有关,我能够做到这一点并从 Azure AD 获取令牌。但是我面临着将前端与我的 IS3 集成的障碍,我无法弄清楚如何在 IS3 中使用来自 azure 的访问令牌并从我的 IS3 对用户进行身份验证。
  • @Garv 您的 IS3 服务是否使用令牌或有效的用户电子邮件 ID 作为参数?

标签: azure-active-directory identityserver4 openid-connect microsoft-teams identityserver3


【解决方案1】:

【讨论】:

  • 我已经查看了这些资源并已经实现了。这些所有链接都用于团队应用程序前端的身份验证。我能够做到这一点。但是在我从 Microsoft 获得 id_token 后,我可以调用我的 IS3 使用 Microsoft 的 id_token 发出不记名令牌。
  • 您可以使用令牌交换规范 (tools.ietf.org/html/rfc8693) 将 ID 令牌交换为访问令牌。另一个应该可行的解决方案是,在您登录团队后,您可以使用 IS3 启动常规授权流程,它应该自动使用 Azure AD 凭据对您进行身份验证(使用 SSO)。如果使用 Azure AD 的相同域,则 iframe 在这里应该不是问题。
  • 是否可以在客户端进行身份验证,然后调用IS3根据用户ID直接颁发令牌而不在IS3上对用户进行身份验证。
  • 如果 IS3 支持令牌交换,那么是的。此外,如果 SSO 正常工作,用户也应该获得 IS3 的授权,而无需任何额外的身份验证。
【解决方案2】:

如果我正确理解您的要求,那么您可以尝试以下解决方案: 用户在登录到 Teams 应用程序时使用 Azure Ad 进行身份验证。现在您可以将登录用户的 AD 信息(最好是用户主体名称)发送到您的 IS3 并从您的端进行身份验证。

【讨论】:

  • 是的,我也想这样做。但是对于这种情况,我应该使用哪个 O Auth 流程。我找不到这方面的 O Auth 流程。
猜你喜欢
  • 1970-01-01
  • 2019-01-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-26
  • 1970-01-01
  • 2017-10-27
  • 2021-10-05
相关资源
最近更新 更多