我们正在考虑将Orchard用于内部网站。
我们目前使用Shibboleth进行初始身份验证,这会以http://domain/Shibboleth.sso/{stuff}
在我们当前的ASP.NET MVC网站中,我们需要使用以下内容修改Global.asax:
routes.IgnoreRoute("Shibboleth.sso/{isapiInfo}/{isapiDetails}");
routes.IgnoreRoute("Shibboleth.sso/{*pathInfo}");
不幸的是,Orchard不允许我们走那条路,所以经过一些研究后看起来需要添加一个处理程序。
通过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" />
我尝试了几种不同的变体,但仍然没有骰子。
因为无论如何我都删除了源代码,我尝试了简单的路径,只需添加两个routes.IgnoreRoute
调用并重新构建,但这会产生同样的问题。
如果我删除了Shib要求,那么Orchard就可以了,如果我在Shib上添加一个新的MVC项目(并且我们添加了两个IgnoreRoute调用)也可以正常工作。
浏览器返回404(空白页面),所以我觉得Orchard仍在抓住请求。
关于如何让Orchard跳过这条道路的任何建议?
答案 0 :(得分:1)
我最后做了两件事。
首先,我使用Not Found MVC作为模板创建了一个新模块。特别是the InstallerModule code。
我在system.web&gt;中添加了以下内容:的HttpModules:
<add name="InstallerModule" type="IgnoreShibboleth.InstallerModule, IgnoreShibboleth" />
我还在system.webServer&gt;中添加了相同的内容。模块。
所有代码都是在忽略路由中添加的。
routes.IgnoreRoute("Shibboleth.sso/{isapiInfo}/{isapiDetails}");
routes.IgnoreRoute("Shibboleth.sso/{*pathInfo}");
最后一步我非常接近。我在system.webServer&gt;下添加了以下内容:处理程序,紧跟在<clear />
:
<add name="Shib" path="*.sso" verb="*" modules="IsapiModule" scriptProcessor="{path-to}\lib\shibboleth\isapi_shib.dll" resourceType="Unspecified" requireAccess="Script" preCondition="integratedMode,bitness64" />
过去不需要最后一次,但对于Orchard正在做的事情似乎是必要的。