2013-05-08 90 views
0

我们正在考虑使用Orchard作为内部网站。Orchard CMS和Shibboleth认证

我们目前使用Shibboleth为初始认证,这使得回发到我们的网站在http://domain/Shibboleth.sso/{stuff}

格式在我们目前的ASP.NET MVC网站,我们需要的只是修改Global.asax中有以下:

routes.IgnoreRoute("Shibboleth.sso/{isapiInfo}/{isapiDetails}"); 
routes.IgnoreRoute("Shibboleth.sso/{*pathInfo}"); 

不幸的是,果园不允许我们走这条路,所以一些研究它看起来像它需要后要添加的处理程序。

通过IIS(Server 2008 R2中),这个加入到处理器组内的web.config文件:

<add name="Shib" path="*.sso" verb="*" modules="IsapiFilterModule" scriptProcessor="C:\{path}\isapi_shib.dll" resourceType="Either" requireAccess="Script" preCondition="integratedMode" /> 

我已经试过这几个不同的变化,仍然没有骰子。

因为无论如何我都拉下了电源,我尝试去添加两个​​调用和重新构建的简单路线,但这会导致相同的问题。

如果我删除了Shib需求,那么Orchard开始很好,如果我在Shib上添加一个新的MVC项目(以及我们的两个IgnoreRoute调用),那也可以正常工作。

浏览器返回一个404(空白页),所以我有一个果园仍抓住请求的感觉。

上我怎么可能去获得果园跳过这条道路有什么建议?

回答

1

我最终做了两件事。

首先,我创建了使用未找到MVC的模板创建一个新的模块。特别是the InstallerModule code

我加入的System.Web以下>的HttpModules:

<add name="InstallerModule" type="IgnoreShibboleth.InstallerModule, IgnoreShibboleth" /> 

我还添加相同的到system.webServer>模块。

所有的代码都被添加在忽略路线。

routes.IgnoreRoute("Shibboleth.sso/{isapiInfo}/{isapiDetails}"); 
routes.IgnoreRoute("Shibboleth.sso/{*pathInfo}"); 

最后一步我真的很接近。我添加system.webServer在以下>处理程序,在<clear />后:

<add name="Shib" path="*.sso" verb="*" modules="IsapiModule" scriptProcessor="{path-to}\lib\shibboleth\isapi_shib.dll" resourceType="Unspecified" requireAccess="Script" preCondition="integratedMode,bitness64" /> 

最后一次是在过去是不需要的,但似乎有必要对一些果园在做什么。