Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在“microsoft团队”选项卡中进行身份验证?_C#_Asp.net Core_Authentication_Microsoft Graph Api_Microsoft Teams - Fatal编程技术网

C# 如何在“microsoft团队”选项卡中进行身份验证?

C# 如何在“microsoft团队”选项卡中进行身份验证?,c#,asp.net-core,authentication,microsoft-graph-api,microsoft-teams,C#,Asp.net Core,Authentication,Microsoft Graph Api,Microsoft Teams,我正在创建一个asp.net核心站点,该站点已完成,并使用Azure AD进行身份验证。。我进行身份验证的方法是遵循microsoft文档,在azure中注册应用程序,获取客户端Id,等等。。。 它在浏览器中运行良好,但当我尝试进入我的microsoft团队选项卡时,它甚至不加载任何内容。。 我还听说我可以进行SSO身份验证,我尝试过,但如果我这样做,那么我在浏览器中的身份验证就不起作用了!我想让浏览器和团队应用程序都进行身份验证! 我不知道我是否提供了足够的信息,或者我是否不够清楚,所以问任何

我正在创建一个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 ad应用程序)


你能给我一个示例代码吗?它在团队和.NETCore浏览器上都可以使用?我可以从以下内容获得指导:)谢谢

如果您自己的身份验证是从脚本启动的,您可以检查
microsoftTeams
对象,并根据它是否存在,启动您自己的身份验证(我假定为ADAL或MSAL),或启动团队SSO身份验证。请注意,SSO身份验证不允许您调用图形(例如,您还没有说为什么需要准确地进行身份验证),因此如果需要这样做,您需要提供管理员同意或实现后端以将您的令牌转换为代表令牌(本文对此进行了说明)

更新:有一个MSAL 2.0示例显示了如何在同一应用程序中处理团队和正常web身份验证(例如,团队选项卡和独立网页)。看

例如,我所说的检查
microsoftTeams
,您的代码可以大致如下所示:

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

我遵循了microsoft文档,并创建了一个javascript函数。。我收到了令牌,但如果我这样做,我就不能在浏览器中进行身份验证了:/I我对这一切都很困惑,我对这种身份验证的东西还不熟悉:p你说不能在浏览器中进行身份验证是什么意思?你的意思是你不能“独立”使用你的web应用吗?如果是这样的话,我会更新我的答案我更新了我的问题,我希望这是一个更清晰的问题:/我甚至不知道如何诚实地回答这个问题,因为我真的迷失在这个…:/好的,我看到更新了,太好了。也许从另一个方向开始-为什么要验证用户?例如,在Teams示例中,您所做的只是显示名称-您根本不需要为此进行身份验证,您可以使用Teams“Context”对象来获取该名称。顺便问一下,这是一个内部应用程序(例如,用于公司内部的应用程序),还是外部应用程序(例如,人们将从应用程序商店使用的应用程序)?好的,谢谢。对不起,这不是很简单。也许还有另一个想法——为你的应用程序创建两个“入口点”——一个用于团队托管,另一个用于独立。比如说,基本上有两个稍微不同的Razor共享视图