Authentication 在运行时将新中间件注册到OWIN管道,而无需重新启动应用程序

Authentication 在运行时将新中间件注册到OWIN管道,而无需重新启动应用程序,authentication,owin,openid-connect,katana,Authentication,Owin,Openid Connect,Katana,我已经在OWIN管道中添加了所有可用的中间件,使用Startup类对项目中的用户进行身份验证。它工作得很好。但在运行时启动后,如何将中间件添加到OWIN管道中呢。 这样管理员就可以使用UI输入新身份验证服务器的详细信息,并根据需要注册新的身份验证服务器,而不会干扰正在运行的应用程序。实际上,标准owin管道实现并不是为了在运行时修改而设计的。它有两个生命周期阶段:初始化(管道创建)和运行(服务请求)。 解决问题的正确而明确的方法是使用中间件,这些中间件支持在运行时修改配置 就你而言: 如果您使用

我已经在OWIN管道中添加了所有可用的中间件,使用Startup类对项目中的用户进行身份验证。它工作得很好。但在运行时启动后,如何将中间件添加到OWIN管道中呢。
这样管理员就可以使用UI输入新身份验证服务器的详细信息,并根据需要注册新的身份验证服务器,而不会干扰正在运行的应用程序。

实际上,标准owin管道实现并不是为了在运行时修改而设计的。它有两个生命周期阶段:初始化(管道创建)和运行(服务请求)。 解决问题的正确而明确的方法是使用中间件,这些中间件支持在运行时修改配置

就你而言: 如果您使用Kentor.AuthServices lib进行身份验证,那么这种支持是现成的。您只需要在启动时注册一个中间件实例,当您修改(添加或删除IdentityProviders)最初提供的KentorAuthServicesOptions实例时,中间件将立即使用更改


如果您必须使用其他组件,您可以通过将现有的auth中间件包装到一个新的组件中并在内部处理实例来构建这种支持。(您可以创建一个中间件来处理配置,并在每个配置中逐个调用auth中间件…等等)

不,它不是为在启动后添加中间件而设计的,但下面是手动操作的方法:

那么如何在startup.cs之外访问Kentor options实例呢?