Ejemplo n.º 1
0
        public static string GetHtml(DittoOptions dittoOptions)
        {
            StringBuilder stringBuilder = new StringBuilder();

            foreach (var transform in dittoOptions.Transforms)
            {
                stringBuilder.Append($@"<li><a href=""{dittoOptions.Path+ "?key=" + transform.TransformName}"">{transform.TransformName}</a></li>");
            }

            var html = $@"<!DOCTYPE html>
                <html>
                    <head>
                        <meta charset=""UTF-8"">
                        <title>Ditto Transform</title>
                        <style>
                            
                        </style>
                    </head>
                    <body>
                        <div >
                            <h2>Please select a user to continue authentication.</h2>
                            <ul>
                                {stringBuilder}
                            </ul>
                        </div>
                    </body>
                </html>";

            return(html);
        }
Ejemplo n.º 2
0
        public async Task InvokeAsync(HttpContext context)
        {
            DittoOptions dittoOptions = context.RequestServices.GetRequiredService <DittoOptions>();

            if (!context.Request.PathBase.ToString().ToLower().Equals(dittoOptions.Path.ToString().ToLower()))
            {
                await _next(context);

                return;
            }

            string    transformName = context.Request.Query["key"].ToString().ToLower();
            Transform transform     = dittoOptions?.Transforms?.FirstOrDefault(t => t.TransformName.Equals(transformName));

            if (transform == null)
            {
                await context.Response.WriteAsync(Resources.GetHtml(dittoOptions));
            }
            else
            {
                IIdentity                identity                 = new ClaimsIdentity(transform.Claims, dittoOptions.AuthenticationType);
                ClaimsPrincipal          claimsPrincipal          = new ClaimsPrincipal(identity);
                AuthenticationProperties authenticationProperties = new AuthenticationProperties();

                await context.SignInAsync(dittoOptions.AuthenticationType, claimsPrincipal, authenticationProperties);

                await context.Response.WriteAsync($"You are logged in with profile: {JsonConvert.SerializeObject(transform)}");
            }
        }
Ejemplo n.º 3
0
        public static void UseDitto(this IApplicationBuilder app)
        {
            app.UseAuthentication();

            DittoOptions dittoOptions = app.ApplicationServices.GetRequiredService <DittoOptions>();

            app.Map(dittoOptions.Path, configuration => configuration.UseMiddleware <DittoMiddleware>());
        }
Ejemplo n.º 4
0
        public static IServiceCollection AddDitto(this IServiceCollection serviceCollection, DittoOptions dittoOptions)
        {
            serviceCollection.AddSingleton(dittoOptions);

            return(serviceCollection);
        }