如何使用身份服务器 3 和 microsoft 团队应用程序使用 Azure AD 令牌进行身份验证
Posted
技术标签:
【中文标题】如何使用身份服务器 3 和 microsoft 团队应用程序使用 Azure AD 令牌进行身份验证【英文标题】:How to authenticate using Azure AD token using identity server 3 and microsoft teams app 【发布时间】: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 作为参数? 【参考方案1】:您是否看过这些似乎可以解释如何实施设置的资源:
https://docs.microsoft.com/en-us/microsoftteams/sign-in-teams https://docs.microsoft.com/en-us/microsoftteams/platform/concepts/authentication/authentication https://docs.microsoft.com/en-us/microsoftteams/platform/tabs/how-to/authentication/auth-tab-aad https://docs.microsoft.com/en-us/microsoftteams/platform/concepts/authentication/configure-identity-provider【讨论】:
我已经查看了这些资源并已经实现了。这些所有链接都用于团队应用程序前端的身份验证。我能够做到这一点。但是在我从 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 流程。以上是关于如何使用身份服务器 3 和 microsoft 团队应用程序使用 Azure AD 令牌进行身份验证的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Microsoft 身份平台身份验证在 ASP.NET Core Web 应用程序中获取 JWT 令牌?
国际大咖团助阵Microsoft Inspire,线上狂欢盛会等你来参与!
ASP .NET Core 身份服务器默认登录页面为 Microsoft
如何选择正确的 Microsoft.AspNetCore.Authentication 替代方案