C# 如何在“microsoft团队”选项卡中进行身份验证?
我正在创建一个asp.net核心站点,该站点已完成,并使用Azure AD进行身份验证。。我进行身份验证的方法是遵循microsoft文档,在azure中注册应用程序,获取客户端Id,等等。。。 它在浏览器中运行良好,但当我尝试进入我的microsoft团队选项卡时,它甚至不加载任何内容。。 我还听说我可以进行SSO身份验证,我尝试过,但如果我这样做,那么我在浏览器中的身份验证就不起作用了!我想让浏览器和团队应用程序都进行身份验证! 我不知道我是否提供了足够的信息,或者我是否不够清楚,所以问任何问题或建议我改变问题。。。 在此方面的任何帮助都将不胜感激!!谢谢:) 更新: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身份验证,我尝试过,但如果我这样做,那么我在浏览器中的身份验证就不起作用了!我想让浏览器和团队应用程序都进行身份验证! 我不知道我是否提供了足够的信息,或者我是否不够清楚,所以问任何
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共享视图