如何在Microsoft团队标签中进行身份验证?

时间:2020-09-29 14:46:48

标签: c# asp.net-core authentication microsoft-graph-api microsoft-teams

我正在创建一个asp.net核心站点,该站点已完成,并且使用Azure AD进行了身份验证。我进行身份验证的方式是通过遵循microsoft文档,在Azure中注册应用程序,获取客户端ID等。等等... 它在浏览器中工作正常,但是当我尝试进入“ Microsoft团队”标签时,它甚至根本不会加载任何内容。 我也听说我可以进行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核心的团队和浏览器上均可工作吗?我可以从中得到指南的东西:)谢谢

1 个答案:

答案 0 :(得分:1)

如果您自己的身份验证是通过脚本启动的,则可以检查microsoftTeams对象,并根据其是否存在来启动您自己的身份验证(我假设为ADAL或MSAL),或发起团队SSO身份验证。请注意,SSO身份验证不允许您调用Graph(您尚未说出为什么需要完全身份验证),因此,如果需要这样做,则需要征得管理员同意或实施后端将您的令牌转换为代用令牌(SSO documentation涵盖了这一点)。

更新:有一个MSAL 2.0示例,显示了如何在同一应用程序(例如“团队”标签和独立的网页)中同时处理Teams和常规Web身份验证。参见here

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

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