RSS订阅
RSS订阅TT SOA

设计一个包含三层的app实例

2008-5-28  选择字号:  | |
打印本文章

导读:Web浏览器处在用户层,但是实际上它并不参与服务器端的应用程序所在层的描述。用户通过浏览器提供凭证,最终由IIS认证或者通过到ASP.NET的用户认证。

关键词:app实例 Web浏览器 .NET 应用程序 数据库服务器

正在加载数据... 【TechTarget中国原创】我现在正在设计一个包含三层的app实例:Web 浏览器,.NET应用程序和数据库服务器。我相信(如果我说错了请纠正)只要每个个体用户都没有直接连接到SQL服务器上(除了管理员等),那么可以做到使用适当的权限为IIS创建一个登陆来连接到服务器或者是创建一个注册用户来连接到当前的数据库。.NET应用程序将使用ADO.NET连接到数据库(DB)。这是正确的么,或者是我攻击错了目标?

让我们首先阐明你在这儿所描述的实体层。Web浏览器处在用户层,但是实际上它并不参与服务器端的应用程序所在层的描述。用户通过浏览器提供凭证,最终由IIS认证或者通过到ASP.NET的用户认证。

【TechTarget中国原创】问:我现在正在设计一个包含三层的app实例:Web 浏览器,.NET应用程序和数据库服务器。我相信(如果我说错了请纠正)只要每个个体用户都没有直接连接到SQL服务器上(除了管理员等),那么可以做到使用适当的权限为IIS创建一个登陆来连接到服务器或者是创建一个注册用户来连接到当前的数据库。.NET应用程序将使用ADO.NET连接到数据库(DB)。这是正确的么,或者是我攻击错了目标?

  答:让我们首先阐明你在这儿所描述的实体层。Web浏览器处在用户层,但是实际上它并不参与服务器端的应用程序所在层的描述。用户通过浏览器提供凭证,最终由IIS认证或者通过到ASP.NET的用户认证。我假设.NET应用程序连同IIS一起在Web服务器的实体层上运行。数据库服务器实体层可能正在运行数据库应用程序。那么服务器端就存在两个实体层。如果这是基于内联网(intranet)的应用程序,网站可能配置成在IIS中的Windows认证,也就是说,IIS将在Windows域中验证用户。已批准的请求将被送到ASP.NET运行时进行处理,如果应用程序配置成启用模拟用户,那么应用程序代码将取决于模拟用户被授权可以做什么。

  identity impersonate="true"

  例如,如果登陆用户被授权对数据库进行存取(这实际上的意义是:无论哪个数据库对象都允许该用户进行存取,而且是任何形式的存取方式,类似db_datareader, dbdatawriter)那么存取数据库的函数功能将会无异常地执行。但是正像你所说的,这并不现实。这意味着试图对数据库进行存取的代码必须首先模拟一个有适当权限对数据库对象进行存取的帐户。如果是内联网(intranet)应用程序来模拟登陆用户,那么会非常匆忙地处理这个模拟并且会发生重复,从而导致已登陆的用户再次使用同一身份登陆,并执行遗留的请求线程。

  如果应用程序不模拟登陆用户,ASP.NET应用程序需求将和在machine.config字段中配置的 ASP.NET identity一同被执行。这通常使用有权限限制的NETWORKSERVICE帐户(特意设置的)。理论上,你可以创建一个应用程序来为所有的需求模拟一个拥有高级特权的帐户,当然它也可以对适当的数据库对象进行存取。但是-不要这样做!这是懒人获得可使用的保护资源的解决办法,显然它严重危及到应用程序的安全。如果黑客企图访问内部工作进程的执行线程,他们就可以获得该线程的所有存取权限。缺省情况下,我们更倾向于使用NETWORKSERVICE帐户,或者使用内联网(intranet)应用程序已登陆用户的帐户。

  那么,这样做的解决方法呢?

  · 要么模拟登陆用户,要么在NETWORKSERVICE帐户下运行应用程序

  · 对于数据库调用,要么在运行时模拟一个特权用户,要么使用企业服务(EnterpriseServices)调用一个服务组件,该服务组件是和所需帐户一同运行使用数据库特权(更好)。这样做减弱了所需帐户从代码访问数据库,允许它根据需要修改成为

  你需要什么样的帐户?

  同时拥有一个帐户对数据库只读(对于适当的对象的db_datareader特权),和另外一个帐户对数据库可读可写(db_datareader 和db_datawriter特权)是有用的。这样的话,在读操作中你不会轻易地受到写操作的攻击。

还没有登录? 阅读全文请先登录或注册
用户名:(请填写您的E-mail做为登录账号)
  • 获取最新的IT业界资讯、市场动态、行业趋势等独家原创内容。
  • 分享国内外技术专业人士提供的技巧经验。
  • 利用专注IT的技术资源中心,不断更新专业知识。
  • 享受白皮书、Webcast等系列特色增值服务。
  • 免费参加TT中国举办的各种会员活动。
  • 更多的精彩服务,在不断开发中……
用户名:(请填写您的E-mail)
密 码:
 永久登录
请输入您的登录email:
期我们回顾了甲骨文和SUN在2008年的收购经历及笔者对收购事件的解读。本期我们将继续这一话题,而我们所点评的软件厂商包括微软、雅虎、IBM、Novell和BMC……
在今天,很可能你已经开始着手进行一个或者两个SOA项目了。当然,这并不奇怪,在世界范围内的11000家大型企业中,有95%的企业已经开始投入某种努力去实现SOA了……
我们正在进入多元化的银行和金融服务,我们处理客户关系管理CRM,BI,遗产系统,产品J2EE和.NET和其他异构平台。如果我们想要转移到一个共同的平台,为什么要选择SOA……
最近DIG和普元公司联合发布的白皮书《软件商的成长之路》,该白皮书通过市场调查将软件企业分成了“服务型软件开发商”和“产品型软件开发商”,这是一次名词定义进步……
探究跨平台Web服务集成所面对的常见的互操作性难题的根源。该系列文章中的第3部分描述了J2EE技术与.NET之间可以导致Web服务互操作性困难的不同的命名约定……
虚拟化和SOA之间是一种间接的、相辅相成的关系。也许在IT及业务转型中,两者的结合使用会发挥最大的优势。虚拟化有助于更快地显示部署基础设施的投资回报率(ROI)。
云计算的概念越来越流行,Amazon、Google和IBM是第一批将云计算引入公众视线的公司。云计算就是新的Web2.0,一种既有技术上的市场绽放。
安全对于许多的IT部门来说都是一个重要的问题之一,但是SOA安全问题完全是在另一个新的纬度上了。对于SOA为一个机构所带来的许多的好处,例如具有在许多不同的提供者和供应商的情况下混合和匹配服务。
最新更新
专家答疑
技巧
Dana Gardner
您能解释什么是“私有云”吗,能否举例说明?这是供应商需要建立的基础吗?作为托管服务供应商和服务供应商寻求最有效和最强大的基础设施,作为他们的“云”支持能力……
Andrew Pollack
我们正在寻找一种从主机选择SOAP服务器的请求。我们希望制造一个远程程序呼叫(RPC)从CICS程序的SOAP服务器,其中进程请求,使错误或成功后的反应……
Andrew Nash
如何验证在Web服务和Web应用程序之间不同的数据?正常的Web应用程序数据验证仍然需要Web服务。缓冲溢出和正确的数据类型处理以及所有其他形式的数据验证的匹配问题……