Esempio n. 1
0
 public YHttpRequestHandler(IYAuthProvider authProvider, IHttpClientFactory httpClientFactory,
                            IOptions <YGraphOptions> graphOptions,
                            IOptions <YHostOptions> apiOptions,
                            IOptions <YMicrosoftIdentityOptions> azureAdOptions)
 {
     this.authProvider      = authProvider;
     this.httpClientFactory = httpClientFactory;
     this.graphOptions      = graphOptions.Value;
     this.apiOptions        = apiOptions.Value;
     this.azureAdOptions    = azureAdOptions.Value;
 }
Esempio n. 2
0
        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddControllers()
            .AddControllersAsServices()
            // Adding option to ignore Null values when sending back JsonResult from any Web Api
            //.AddJsonOptions(options =>
            //{
            //    options.JsonSerializerOptions.IgnoreNullValues = true;
            //    options.JsonSerializerOptions.WriteIndented = true;
            //    optin
            //})
            // Adding this option to be able to send back JObjet from any Web Api
            .AddNewtonsoftJson(options =>
            {
                options.SerializerSettings.NullValueHandling = NullValueHandling.Ignore;
                options.SerializerSettings.Formatting        = Formatting.Indented;
                options.SerializerSettings.Converters.Add(new StringEnumConverter());
            });

            services.AddHttpClient();
            services.AddHttpContextAccessor();
            services.AddOptions();
            services.AddDistributedMemoryCache();

            services.Configure <CookiePolicyOptions>(options =>
            {
                options.CheckConsentNeeded    = context => true; // consent required
                options.MinimumSameSitePolicy = SameSiteMode.None;
            });


            services.AddSession(option =>
            {
                option.IdleTimeout        = TimeSpan.FromMinutes(45);
                option.Cookie.IsEssential = true;
            });

            services.Configure <YGraphOptions>(options => Configuration.Bind("Graph", options));
            services.Configure <YHostOptions>(options => Configuration.Bind("YgdraServices", options));
            services.Configure <YMicrosoftIdentityOptions>(options => Configuration.Bind("AzureAD", options));


            // Need an instance to get the scopes...
            var graphOptions = new YGraphOptions();

            Configuration.Bind("Graph", graphOptions);

            services.AddMicrosoftIdentityWebAppAuthentication(Configuration)
            .EnableTokenAcquisitionToCallDownstreamApi(graphOptions.GetScopes())
            .AddSessionTokenCaches();

            services.AddScoped <IYAuthProvider, YAuthProvider>();
            services.AddScoped <IYHttpRequestHandler, YHttpRequestHandler>();
            services.AddScoped <IYResourceClient, YResourceClient>();

            services.AddMicrosoftGraph(Configuration);

            //services.AddControllersWithViews().AddMicrosoftIdentityUI();
            services.AddControllersWithViews();

            services.AddRazorPages()
            .AddMvcOptions(options =>
            {
                options.ModelBinderProviders.Insert(0, new PolymorphicEntitySourceBinderProvider());
                options.ModelBinderProviders.Insert(0, new PolymorphicDataSourceViewModelBinderProvider());
                var policy = new AuthorizationPolicyBuilder().RequireAuthenticatedUser().Build();
                options.Filters.Add(new AuthorizeFilter(policy));
            }).AddMicrosoftIdentityUI();

            services.AddControllers();

            var signalROptions = new YSignalROptions();

            Configuration.Bind("SignalR", signalROptions);

            services.AddSignalR().AddAzureSignalR(options =>
            {
                options.ConnectionString = signalROptions.ConnectionString;
                options.ServerStickyMode = ServerStickyMode.Required;
            });
        }