Как интегрировать аутентификацию OpenIDConnect и AzureAD, в то время как все приложение будет уже аутентифицировано с помощью pingfederate SSO с WsFederate - PullRequest
0 голосов
/ 26 июня 2019

В настоящее время приложение аутентифицируется с использованием PingFederate SSO с Microsoft.Owin.Security.WsFederation аутентификацией.Это работает нормально.Теперь в новом требовании: при нажатии кнопки на одной из страниц того же приложения он должен интегрироваться в Office 365 Excel онлайн.И для этого пользователю необходимо пройти аутентификацию с использованием учетных данных Office365.В моей демонстрационной демонстрации я могу проходить аутентификацию с использованием OpenIdConnect и Azure AD, когда нет WsFederate с аутентификацией SSO федеративного пинга.Но когда я объединяю существующий код с новым кодом OpenIDConnect, все терпит неудачу.В рамках подключения Office365 Excel к Интернету мне также необходимо использовать Microsoft.Graph.Auth.

Мой текущий рабочий код в «классе запуска»:

 public void ConfigureAuth(IAppBuilder app)
        {



            app.SetLoggerFactory(new DiagnosticsLoggerFactory());

            app.Use((context, next) =>
            {
                // Depending on the handler the request gets mapped to, a session might not be enabled. Force it on.
                HttpContextBase httpContext = context.Get<HttpContextBase>(typeof(HttpContextBase).FullName);
                httpContext.SetSessionStateBehavior(SessionStateBehavior.Required);
                return next();
            });

            // SetSessionStateBehavior must be called before AcquireState
            app.UseStageMarker(PipelineStage.MapHandler);

            app.UseCookieAuthentication(new CookieAuthenticationOptions
            {
                CookieHttpOnly = true,
                CookieSecure =  CookieSecureOption.Never,
                AuthenticationMode = AuthenticationMode.Active,
                AuthenticationType = WsFederationAuthenticationDefaults.AuthenticationType,
                Provider = new CookieAuthenticationProvider
                {
                    OnException = context =>
                    {
                        System.Diagnostics.EventLog.WriteEntry("WsFed-Exception", context.Exception.Message + "\n" + context.Exception.StackTrace );
                    }
                },
                ExpireTimeSpan = TimeSpan.FromHours(4.00),
                SlidingExpiration = true,
                CookieManager =  new SystemWebCookieManager()
            });

            app.UseWsFederationAuthentication(
                new WsFederationAuthenticationOptions
                {
                    MetadataAddress = ConfigurationManager.AppSettings[Constants.IDA_FEDERATION_METATADATA_LOCATION],
                    Wtrealm = ConfigurationManager.AppSettings[Constants.IDA_FEDERATION_REALM],
                    UseTokenLifetime = false,
                    SignInAsAuthenticationType = WsFederationAuthenticationDefaults.AuthenticationType
                }); 
        }

Как добавить к этому OpenIdConnect?Поскольку приложение аутентифицируется с помощью ping с использованием WsFederate, можно ли будет интегрировать OpenIdConnect в тот же класс запуска приложения?Пожалуйста, ведите меня.

...