public static AuthenticationBuilder AddCreyClientAuthenticationAndAuthorization(
            this IServiceCollection collectionBuilder,
            IConfiguration configuration,
            string serviceName,
            SessionCookieOptions sessionCookieOptions = null,
            params string[] additionalSchemes)
        {
            var authenticationBuilder = collectionBuilder
                                        .AddAuthorization(options =>
            {
                options.AddCreyAuthorization(configuration, additionalSchemes);
                options.DefaultPolicy = options.GetPolicy(CreyAuthorizationDefaults.CreyUser);
            })
                                        .AddAuthentication()
                                        .AddSessionCookieAuthentication(configuration, (sessionCookieOptions == null)
                    ? new SessionCookieOptions(configuration, serviceName)
                    : sessionCookieOptions);

            return(authenticationBuilder);
        }
Example #2
0
        public static AuthenticationBuilder AddSessionCookieAuthentication(
            this AuthenticationBuilder authenticationBuilder,
            IConfiguration configuration,
            SessionCookieOptions sessionCookieOptions)
        {
            return(authenticationBuilder.AddCookie(SessionCookieAuthenticationDefaults.AuthenticationScheme, options =>
            {
                options.Cookie.Name = configuration.GetSessionCookieName();
                options.Cookie.Domain = configuration.GetCookieDomain();
                options.Cookie.HttpOnly = false;
                options.Cookie.SameSite = SameSiteMode.None;
                options.Cookie.SecurePolicy = CookieSecurePolicy.Always;

                options.ExpireTimeSpan = TimeSpan.FromDays(365); // TODO: remove when cookie refresh is implemented
                options.SlidingExpiration = false;
                options.Events = sessionCookieOptions.CookieAuthenticationEvents;
                options.TicketDataFormat = new SessionCookieDataFormat(configuration, sessionCookieOptions.AuthenticationType);
                options.LoginPath = new PathString(sessionCookieOptions.LoginPath);
                options.LogoutPath = new PathString(sessionCookieOptions.LogoutPath);
            }));
        }