我们有一个托管在IIS中的第三方数据可视化工具(用Silverlight编写),并且根本不提供任何安全性或身份验证(即如果您有权访问服务器并知道URL可以查看所有数据使用ODBC连接中的凭据公开)。我们已经构建了另一个应用程序,它基于登录用户提供适当的身份验证和访问限制。我们目前的“安全”第三方应用程序的解决方案是检查用户是否从我们的应用程序访问它。看来我们正在通过Referer头部来检查URL。我可以在同一台服务器上托管的现有第三方应用程序上重复使用我的ASP.Net身份验证吗?
我想知道是否可以将模块添加到使用我们现有的身份验证和权限来控制对第三方应用程序的访问的管道中(我们当前正在使用会话和表单身份验证的混合,但可能会重写权利要求书)。这听起来像应该起作用,但是没有人有尝试过这种事情的经验吗?陷阱?全能的坏主意?
更新:我已经确认与供应商,它只是一个ASP.Net应用程序与几页作为入口点,所以我应该能够添加表单身份验证。我试图让它使用共享窗体cookie,但到目前为止没有运气。我有这个在每个web.config中对我们的网站(本地主机/ MainApp)和供应商站点(本地主机/供应商):
<authentication mode="Forms">
<forms name=".ASPXFORMSAUTH" loginUrl="Login.aspx" protection="All" timeout="20" path="/" />
</authentication>
<machineKey
validationKey="C50B3C89CB21F4F1422FF158A5B42D0E8DB8CB5CDA1742572A487D9401E3400267682B202B746511891C1BAF47F8D25C07F6C39A104696DB51F17C529AD3CABE"
decryptionKey="8A9BE8FD67AF6979E7D20198CFEA50DD3D3799C77AF2B72F"
validation="SHA1"/>
为了记录在案,这些都是不我将使用的键在生产中,而是取自MSDN示例。
我已经更新了供应商的Global.asax文件(我们已经做了,在我们的安装程序)补充:
protected void FormsAuthentication_OnAuthenticate(object sender, FormsAuthenticationEventArgs args)
{
System.Diagnostics.Debug.WriteLine("FormsAuthentication_OnAuthenticate");
if (Request.Cookies[FormsAuthentication.FormsCookieName] != null)
{
System.Diagnostics.Debugger.Break();
try
{
FormsAuthenticationTicket ticket = FormsAuthentication.Decrypt(Request.Cookies[FormsAuthentication.FormsCookieName].Value);
args.User = new System.Security.Principal.GenericPrincipal(new FormsIdentity(ticket), new string[0]);
if (!args.User.Identity.IsAuthenticated)
{
Context.Response.Redirect("~/Error.htm");
}
}
catch (Exception e)
{
Context.Response.Redirect("~/Error.htm?" + e.Message);
// Decrypt method failed.
}
}
else
{
Context.Response.Redirect("~/Error.htm?CookieNotFound");
}
}
,但现在我正准备。“无法验证数据”
从窗体标签中删除域后,认证现在正在工作。我只需要将它从服务电话中删除,我就会全部设置好(是的,它确实向全世界开放了服务,至少每个人都可以访问内部网)。
如果只是这么简单。这是一个购买的应用程序,它似乎是一个完整的提供SilverLight应用程序的ASP.Net应用程序。我需要保护整个应用程序,并且安装程序将其放置在我们无法控制或更改的固定位置。 – 2013-02-20 19:02:15
您无法设置新的(子)Web应用程序并将其指向相同的物理路径?您可以将它设置为与原始应用程序池运行在同一个应用程序池中,我打赌,稍微调整一下即可启用它。 – mikey 2013-02-20 19:10:02
没有想到:)我会试试看看会发生什么。 – 2013-02-20 19:18:44