如何在 Microsoft 团队选项卡中进行身份验证?

How to authenticate in microsoft teams tab?

我正在创建一个 asp.net 核心站点,该站点已完成并使用 Azure AD 进行身份验证。我进行身份验证的方式是遵循 Microsoft 文档,在 azure 中注册一个应用程序,获取客户端 ID 等等...... 它在浏览器中运行良好,但是当我尝试进入我的 Microsoft Teams 选项卡时,它甚至没有加载任何东西。 我还听说我可以进行 SSO 身份验证,我试过了,但是如果我这样做了,那么我在浏览器中的身份验证就不起作用了!我想让浏览器和团队应用程序都进行身份验证! 我不知道我是否提供了足够的信息,或者我是否不够清楚,所以请问任何问题或建议我更改问题... 对此有任何帮助表示赞赏!谢谢:)

更新:

microsoftTeams.initialize();
var authTokenRequest = {
    successCallback: function (result) {
        var token = jwtDecode(result);
        document.getElementById("userAqui").innerHTML = "Welcome " + token.payload.name;
    },
    failureCallback: function (error) {
        //window.location.href = "Home/Index";
        //alert('Invalid user! Error:' + error); 
    }
};
microsoftTeams.authentication.getAuthToken(authTokenRequest);

我正在使用类似的东西来获取令牌,并且我收到了该令牌。但是如果我这样做,当我在浏览器中打开应用程序而不进入团队时,我不会获得该令牌... 我有点想要的是双向工作的东西...

现在为了在浏览器中进行身份验证,我将其放在我的 json:

 "AzureAd": {
    "Instance": "https://login.microsoftonline.com/",
    "Domain": "[Enter the domain of your tenant, e.g. contoso.onmicrosoft.com]",
    "ClientId": "***",
    "TenantId": "***",
    "ClientSecret": "***",
    "CallbackPath": "/signin-oidc"
  }

我在启动时有身份验证部分,它将进行身份验证(我在 azure 中注册了我的 azure 广告应用程序).​​..

你能给我一个示例代码吗,它在团队和浏览器上都适用于 .net 核心?我可以从中得到指导的东西:)谢谢

如果您自己的身份验证是从脚本启动的,您可以检查 microsoftTeams 对象,并根据它是否存在,启动您自己的身份验证(我假设是 ADAL 或 MSAL),或者启动团队 SSO 身份验证。请注意,SSO 身份验证不允许您调用 Graph(您还没有说明为什么需要准确进行身份验证),因此如果您需要这样做,您需要提供管理员同意或实施后端将您的令牌转换为 on-behalf-of 令牌(SSO documentation 涵盖了这一点)。

更新:有一个 MSAL 2.0 示例展示了如何在同一个应用程序(例如 Teams 选项卡和独立网页)中同时处理 Teams 和普通 Web 身份验证。参见 here

举个例子,我的意思是检查 microsoftTeams,您的代码可能看起来像这样:

    if (microsoftTeams) {
        startTeamsSSO();
    } else {
       startStandaloneWebAuth();
    }