Example #1
0
        public EmbeddedHtmlResult(HttpRequestMessage request, string file, IdentityAdminOptions adminOptions)
        {
            var pathbase = request.GetOwinContext().Request.PathBase;

            this.path = pathbase.Value;
            this.file = file;
            this.authorization_endpoint = pathbase + Constants.AuthorizePath;
            this._adminOptions          = adminOptions;
        }
        public AdminPageController(IdentityAdminOptions identityAdminOptions)
        {
            if (identityAdminOptions == null)
            {
                throw new ArgumentNullException("identityAdminOptions");
            }

            this._identityAdminOptions = identityAdminOptions;
        }
Example #3
0
 public static void UseIdSrvAdmin(this IAppBuilder app, bool usehttps = false)
 {
     app.Map("/admin", adminApp =>
     {
         var factory = new IdentityAdminServiceFactory
         {
             IdentityAdminService = new IdentityAdmin.Configuration.Registration <IIdentityAdminService, IdentityAdminManagerService>()
         };
         var adminoption = new IdentityAdminOptions()
         {
             Factory = factory,
         };
         adminoption.AdminSecurityConfiguration.RequireSsl = usehttps;
         adminApp.UseIdentityAdmin(adminoption);
     });
 }
Example #4
0
        public void Configuration(IAppBuilder app)
        {
            Log.Logger = new LoggerConfiguration()
                         .MinimumLevel.Debug()
                         .WriteTo.Trace()
                         .CreateLogger();

            app.Map("/adm", adminApp =>
            {
                var factory = new IdentityAdminServiceFactory();
                factory.Configure();

                var adminOptions = new IdentityAdminOptions
                {
                    Factory = factory
                };
                adminOptions.AdminSecurityConfiguration.RequireSsl = false;

                adminApp.UseIdentityAdmin(adminOptions);
            });
        }
Example #5
0
 public IdentityAdminMiddleware(RequestDelegate next, IdentityAdminOptions options, ILogger <IdentityAdminMiddleware> logger)
 {
     _next    = next ?? throw new ArgumentNullException(nameof(next));
     _options = options ?? throw new ArgumentNullException(nameof(options));
     _logger  = logger ?? throw new ArgumentNullException(nameof(logger));
 }
Example #6
0
        public void Configuration(IAppBuilder appBuilder)
        {
            Log.Logger = new LoggerConfiguration()
                         .WriteTo.Trace(outputTemplate: "{Timestamp} [{Level}] ({Name}){NewLine} {Message}{NewLine}{Exception}")
                         .CreateLogger();

            JwtSecurityTokenHandler.InboundClaimTypeMap = new Dictionary <string, string>();

            appBuilder.UseCookieAuthentication(new CookieAuthenticationOptions
            {
                AuthenticationType = "Cookies",
                LoginPath          = new PathString("/Home/Login")
            });

            appBuilder.UseOpenIdConnectAuthentication(new OpenIdConnectAuthenticationOptions
            {
                AuthenticationType = "oidc",
                Authority          = "https://localhost:44333",
                ClientId           = "idmgr_and_idadmin",
                RedirectUri        = "https://localhost:44333",
                ResponseType       = "id_token",
                UseTokenLifetime   = false,
                Scope = "openid idmgr idAdmin",
                SignInAsAuthenticationType = "Cookies",
                Notifications = new OpenIdConnectAuthenticationNotifications
                {
                    SecurityTokenValidated = n =>
                    {
                        n.AuthenticationTicket.Identity.AddClaim(new Claim("id_token", n.ProtocolMessage.IdToken));
                        return(Task.FromResult(0));
                    },
                    RedirectToIdentityProvider = async n =>
                    {
                        if (n.ProtocolMessage.RequestType == Microsoft.IdentityModel.Protocols.OpenIdConnectRequestType.LogoutRequest)
                        {
                            var result = await n.OwinContext.Authentication.AuthenticateAsync("Cookies");
                            if (result != null)
                            {
                                var id_token = result.Identity.Claims.GetValue("id_token");
                                if (id_token != null)
                                {
                                    n.ProtocolMessage.IdTokenHint           = id_token;
                                    n.ProtocolMessage.PostLogoutRedirectUri = "https://localhost:44333";
                                }
                            }
                        }
                    }
                }
            });

            var connString = ConfigurationManager.ConnectionStrings["IdSvr3Config"].ConnectionString;

            // Identity admin
            appBuilder.Map("/adm", adminApp =>
            {
                var idAdminOptions = new IdentityAdminOptions
                {
                    Factory = ConfigIdentityServerAdmin.Factory.Configure(connString),
                    AdminSecurityConfiguration = new IdentityAdmin.Configuration.AdminHostSecurityConfiguration()
                    {
                        HostAuthenticationType = IdentityAdmin.Constants.CookieAuthenticationType,
                        AdminRoleName          = "IdentityServerAdmin",
                        NameClaimType          = "name",
                        RoleClaimType          = "role",
                    }
                };

                adminApp.UseIdentityAdmin(idAdminOptions);
            });

            //Identity manager
            appBuilder.Map("/idm", adminApp =>
            {
                var idManagerOptions = new IdentityManagerOptions
                {
                    Factory = ConfigIdentityManager.Factory.Configure(connString),
                    SecurityConfiguration = new HostSecurityConfiguration()
                    {
                        HostAuthenticationType = IdentityManager.Constants.CookieAuthenticationType,
                        AdminRoleName          = "IdentityManagerAdmin",
                        NameClaimType          = "name",
                        RoleClaimType          = "role",
                    }
                };

                adminApp.UseIdentityManager(idManagerOptions);
            });

            // Identity server
            appBuilder.Map("/ids", adminApp =>
            {
                var idsrvOptions = new IdentityServerOptions
                {
                    Factory            = ConfigIdentityServer.Factory.Configure(connString),
                    SigningCertificate = Certificate.Get(),
                    RequireSsl         = true
                };

                appBuilder.UseIdentityServer(idsrvOptions);
            });
        }
        public static void UseIdentityAdmin(this IAppBuilder app, IdentityAdminOptions options)
        {
            if (app == null)
            {
                throw new ArgumentNullException("app");
            }
            if (options == null)
            {
                throw new ArgumentNullException("config");
            }

            app.SetLoggerFactory(new LibLogLoggerFactory());

            Logger.Info("Starting IdentityAdmin configuration");

            options.Validate();

            app.Use(async(ctx, next) =>
            {
                if (!ctx.Request.Scheme.Equals("https", StringComparison.OrdinalIgnoreCase) &&
                    options.AdminSecurityConfiguration.RequireSsl)
                {
                    ctx.Response.Write("HTTPS required");
                }
                else
                {
                    await next();
                }
            });

            var container = AutofacConfig.Configure(options);

            app.Use <AutofacContainerMiddleware>(container);

            if (!options.DisableSecurity)
            {
                options.AdminSecurityConfiguration.Configure(app);
            }

            if (!options.DisableUserInterface)
            {
                app.UseFileServer(new FileServerOptions
                {
                    RequestPath = new PathString("/assets"),
                    FileSystem  = new EmbeddedResourceFileSystem(typeof(IdentityAdminAppBuilderExtensions).Assembly, "IdentityAdmin.Assets")
                });
                app.UseFileServer(new FileServerOptions
                {
                    RequestPath = new PathString("/assets/libs/fonts"),
                    FileSystem  = new EmbeddedResourceFileSystem(typeof(IdentityAdminAppBuilderExtensions).Assembly, "IdentityAdmin.Assets.Content.fonts")
                });
                app.UseStageMarker(PipelineStage.MapHandler);
            }

            SignatureConversions.AddConversions(app);
            app.UseWebApi(WebApiConfig.Configure(options));
            app.UseStageMarker(PipelineStage.MapHandler);

            // clears out the OWIN logger factory so we don't recieve other hosting related logs
            app.Properties["server.LoggerFactory"] = null;
        }