如何将Azure Active Directory身份验证作为团队个人选项卡添加到.Net Core静态页面

问题描述

我有一个.Net Core 3.1 MVC项目,该页面为“女士团队”的“个人页面”选项卡提供页面。 身份验证是一场噩梦,因为Teams在iframe中运行个人标签页,因此无法使用常规身份验证工作流程。 有一种解决方法,它会触发一个带有回调的新页面,并且可以解决这个问题,但是实际上并没有针对我的网站执行身份验证(添加[Authorize]属性时,它不会对控制器造成攻击)。 我在网上找到的所有示例都在node中,这使我想知道我想要实现的目标是否可能。

这是我的startup.cs相关部分

  services.Configure<CookiePolicyOptions>(options =>
            {
                options.CheckConsentNeeded = context => false;
                options.MinimumSameSitePolicy = SameSiteMode.None;
            });

            services.AddAuthentication(AzureADDefaults.AuthenticationScheme)
                .AddAzureAD(options => Configuration.Bind("AzureAd",options));

            services.Configure<OpenIdConnectOptions>(AzureADDefaults.OpenIdScheme,options =>
            {
                options.Authority = options.Authority + "/v2.0/";
                options.TokenValidationParameters.ValidateIssuer = false;
            });

            services.AddMvc(options =>
            {
                var policy = new AuthorizationPolicyBuilder()
                    .RequireAuthenticatedUser()
                    .Build();
                options.Filters.Add(new Authorizefilter(policy));
            }).SetCompatibilityVersion(CompatibilityVersion.Version_2_2);

这是使用microsoftTeams javascript SDK调用身份验证并正确接收响应的部分,仅此而已。 我要么错过了一个步骤,要么C#项目配置不正确。如果我在非团队环境中使用身份验证,我需要提到身份验证工作。

  function login(url) {
            hideProfileAndError();

            microsoftTeams.authentication.authenticate({
                url: url,width: 600,height: 535,successCallback: function (result) {

                    var data = localStorage.getItem(result);
                    localStorage.removeItem(result);

                    var tokenResult = JSON.parse(data);
                    // showIdTokenAndClaims(tokenResult.idToken);
                    getUserProfile(tokenResult.accesstoken);

                    console.log(tokenResult);
                },failureCallback: function (reason) {
                    console.log("Login Failed: " + reason);
                    handleAuthError(reason);
                }
            });
        }

任何帮助将不胜感激!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)