2012-02-29 63 views
0

我有两个Web应用程序。一个用于集中式图像服务器。
假设它们是a.com和b.com
b.com适用于图像服务器。
和a.com是我的应用程序托管的地方。
我为图像ob b.com创建了一个处理程序,用于处理请求并添加水印并将其发送回a.aspx。
我正在将图像的路径(绝对像http://b.com/ImageHandler.ashx?id=imageurl)传递给b.com上的处理程序
现在我无法验证b.com上的请求
现在我正在考虑处理b的Handler。 com
应该在a.com
因为在a.com我可以很容易地验证用户。


为此,我是否需要a.com和b.com上的处理程序
或者有什么方法可以在b.com上对用户进行身份验证。在a.com上有会话的 。 我无法访问b.com上的每个请求的数据库,因为图像的请求数量非常大。
希望我能够正确解释我的问题。图像服务器安全性asp.net HTTP处理程序

+0

您是否试图:a /只确保a.com的授权用户可以在b.com上看到他们自己的图像,或者b /只确保b.com上的图像可以通过a.com请求? – dash 2012-02-29 09:24:16

+0

这很复杂。是不是可以做一个HttpWebRequest a.com(图像服务器)处理程序检索图像作为响应?你说什么......你可以试试 – Dinesh 2012-02-29 16:19:20

+0

,因为图像在b.com(物理存储),我必须得到在图像上写文本的物理地址(我认为)。文件夹共享是@vinayC给我的选项之一。我可以将网址转换为图片吗?如果我知道图像的相对路径。 – 2012-03-01 04:43:19

回答

1

您需要先评估将图像服务器放在不同的域下是否有意义。如果所有关于在多个站点之间共享相同的代码,那么通过在站点之下放置处理程序并通过类库共享相关的代码将会更好。

在不同的域上有处理程序可以有合理的理由。例如,它可能需要不同级别的扩展,可能需要资源,并且希望将其隔离到不同的计算机(在相同的域下可能隔离到不同的应用程序池),或者由于某些许可问题(您想要保存处理程序使用的某些库的基于处理器的许可成本)。

如果将要有不同的域,那么你可以把它们作为子域。例如 - a.xyz.com和b.xyz.com。在这种情况下,相同的身份验证票证(在父域即xyz.com上发布)对于两者都是足够的。见domain property for Forms Authentication Cookie来控制这一点。

您还需要询问验证是否适合您的图像处理程序。你想让它开放还是限制某些用户?如果您只想验证用户,并且想要支持多个应用程序,那么您正在考虑支持多个应用程序的用户集。如果它是相同的用户集合(例如活动目录),那么你的工作将会更简单 - 只有一个身份验证提供者,其票证将被您的站点和所有其他应用程序信任[Windows身份验证在类似基础上工作]。

如果它的用户多样化,那么它基本上意味着对于映像服务器,您需要拥有多个需要信任的身份验证提供程序。你可能需要看看一些Federated Identity系统 - 看到这样的一个。这里讨论的基于NET的实现:http://msdn.microsoft.com/en-us/magazine/ff872350.aspx

+0

在我以后告诉a.com的问题中,我将有许多应用程序,如c.com等访问相同的图像服务器。我也想限制直接访问b.com图像。如果请求对象来自我的web应用程序a.com,那么我可以检查请求对象以检查请求来自哪里,那么它应该提供请求,如果不是,则不应该提供请求。 – 2012-02-29 09:49:33

+0

@krshekhar,我假设你从请求中谈到引用领域!依靠这样的领域可能会有问题,因为任何人都很容易制造假冒请求。此外,我不确定电话来自b.com的来源。到目前为止,我假设它来自浏览器,但如果通过a.com服务器代码(而不是浏览器)直接访问b.com,那么您确实没有太多身份验证问题 - 只需确保该调用即可到b.com使用正确的用户凭据。 – VinayC 2012-02-29 10:46:49

+0

早些时候我在b.com上创建了http处理程序,现在我想移动a.com上的处理程序(用于验证检查)。但为了在图像上写文本,我需要图像的绝对路径(“C:/ Images/...”),只能在b.com上获取(我认为)。所以我需要在这两个应用程序中使用处理程序。一个用于写文本(在b.com上),另一个用于验证用户(在a.com上)。我也想知道如何将apache上的http请求映射到图像上。这样做会影响多少性能。 – 2012-02-29 11:04:42