Orchard CMS和Shibboleth身份验证

时间:2013-05-08 22:28:44

标签: orchardcms shibboleth

我们正在考虑将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跳过这条道路的任何建议?

1 个答案:

答案 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正在做的事情似乎是必要的。