我们的组织正计划在我们的.net网站前面使用Webseal作为代理。我们目前正在对自定义sql server用户表使用.net表单身份验证和自定义成员资格提供程序。
在这个新模型下,所有身份验证都将由webseal层完成。根据我的理解,一旦经过身份验证,webseal就会在标题中添加一个令牌,表明用户已经与用户ID一起进行了身份验证。
我希望我们的应用程序无需更改,因此我想构建一些东西,通过构建一个将webseal令牌转换为常规.net令牌的层来保护他们免受webseal的细节。
我不确定应该在哪里做...在某种自定义身份验证提供程序或新的成员资格提供程序中?我不希望我们的任何应用程序必须进行任何更改,除非可能使用此新代码(如果它是http模块或其他提供程序)。
有没有人做过这种事情?对此有什么好的策略。我听说过Windows Identity Framework但不确定它是否是正确的解决方案。
任何建议或指示都会有所帮助。
答案 0 :(得分:1)
如果提供了身份验证信息(在标题中),那么能够在请求管道中使用它的最简单方法是编写自定义模块。
模块是实现IHttpModule
接口的类。在Init
方法中,您可以将自定义处理程序附加到AuthenticateRequest
的{{1}}。您的自定义处理程序应负责重新创建标识,即将HttpApplication
HttpContext
设置为实现User
的任何对象(您可以使用内置IPrincipal
)
然后在GenericPrincipal
的适当部分注册您的模块,您就完成了。
有关详细信息,请向Google询问" c#自定义身份验证模块"。
答案 1 :(得分:0)
假设您正在使用MVC,根据此IBM sample,您可以添加自定义操作过滤器,以将WebSEAL标头中的用户信息转换为经过身份验证的用户。