授权 来源: 时间:2002-09-13 11:27 作者:AMTeam.org 授权 在上周的专栏文章(英文)中,我们讨论了设计收藏 Web 服务时的用户保密问题。根据对用户保密问题的初步调查,我们决定在收藏服务的初版中集中讨论三个主要的使用方案: Web 站点(如 msdn.microsoft.com)在每一个页面上均提供一个按钮,用户可以通过单击此按钮将该页面添加至存储在收藏服务的用户收藏夹中。 msdn.microsoft.com 提供一个网页用以显示用户的收藏,这些收藏最初由 msdn.microsoft.com 代表用户存储在收藏服务中。 msdn.microsoft.com 提供一个 Web 应用程序,使用户可以管理最初由 msdn.microsoft.com
代表用户存储在收藏服务中的收藏。 在本期专栏中,我们将详细讨论授权问题:定义 Web 服务的业务模型时需要考虑的问题;如何建立业务模型与授权的关联;选择用于收藏服务的模式及其理由;以及所选模式对设计和实现的影响。 意见反馈 第一,就用户保密问题,有读者询问我们将如何看待欧盟 (EU) 的数据保护条例。如果想知道“什么是欧盟数据保护条例?”,请访问 http://europa.eu.int/comm/internal_market/en/media/dataprot/(英文)。由于我们的项目组服务于 Microsoft,同时我们计划在 Microsoft 拥有的设备上承载收藏服务,所以我们所展开的服务必须符合 Microsoft 在 EU 数据指令方面的政策。 我们的项目组目前正在与 Microsoft 的公司政策小组协同工作,以确保在我们的产品服务器上展开的收藏服务符合 Microsoft 的政策。如果我们最终为满足 EU 的要求而采取了某些“特别”措施,我们一定会通知大家。但是,请注意:我们为符合 Microsoft 的政策而需要采取的措施并不等同于读者为符合其公司的政策而需要采取的措施。这个例子说明了为什么在整个项目周期中您始终需要法律顾问的协助,以确保无论您的客户、员工和服务器位于何处,您的保密政策均符合当前的法律。 第二,有读者询问如果将收藏服务与某些其他功能结合起来并展开一项新的服务,应该如何处理 Logon 组件。简单地说,Logon 组件的方法是通过收藏 Web 服务公开的。客户端应用程序(在此处为新服务)必须先调用 Logon 方法,然后才能使用用户收藏管理方法。下期专栏将讨论身份验证和授权问题,请在下周阅读详细内容。 Web 服务业务模型 用户可以随意访问站点的全部功能。 用户必须先申请一个免费帐户,才能访问站点的部分或全部功能。 用户必须先支付订阅费,才能访问站点的部分或全部功能。订阅方式通常使用户可以在指定的时间段内无限制地访问某些功能。 用户必须先按次支付使用费用,才能访问某些内容。
将开发和运行费用简单地计为业务成本。 用户支付站点访问费。 将站点空间出售给广告商或其他站点。 客户 定价 付款方式 另一个需要考虑的因素是,客户是必须预先付款、现购现付还是事后付款。如果客户可以事后付款,您可能需要设置未付费用的上限。您可能会对所有客户实行标准限制,或针对每个客户设置不同的限制。 订阅 您需要考虑:是立即为申请帐户的客户授予帐户,还是在授予帐户前先执行一定的审批程序。如果需要审批过程,客户是否可以通过 Web 进行申请,或者需要致电客户服务代表?是否需要指定员工调查和批准新帐户申请? 您还应当考虑在授予帐户前需要哪些信息,以及询问用户哪些可选信息。这些信息可能会归入个人可识别信息类别,需要通过应有的信息条例(如上周的专栏所述)进行保护。 另一个要考虑的因素是,是否允许客户选择自己的帐户标识符和密码(如果有),或者随机生成标识符和密码。如果客户可以选择自己的帐户标识符,您可能需要处理标识符重复的问题。 您还需要考虑用户如何维护自己的帐户信息(包括密码)。客户是否使用您的 Web 站点,以及他们是否能够致电客户服务代表?如果客户忘记了帐户标识符或密码怎么办? 通知和付帐 如果对服务收取费用,尤其是按申请次数收费,则应当考虑要求客户多长时间付一次帐。客户不会希望收到一张有成千上万项独立费用(每次申请服务一项)的帐单。也许您想按天、按周或按月汇总费用,并为需要费用细目的客户提供详细的使用报告。 宽限期 身份验证 每一种可用的机制都有其优劣之处。某些机制相对其他机制而言更加安全。某些机制不能受到用于创建 Web 服务的开发人员工具的广泛支持。某些机制要求客户从第三方获取证书或帐户。某些机制具有显著的性能额外开销。您需要针对客户权衡这些机制的利弊,以确定哪种机制适合您的 Web 服务。有关当前可用的 Web 服务身份验证选项的进一步信息,请参阅 Web 服务安全性(英文)。 审核 客户服务 对于每一种客户服务,您都需要考虑提供该服务的方式。客户是否需要使用 Web 站点来获取帮助?客户是否能够发送电子邮件?客户是否可以通过电话进行联系?无论您决定使用哪种选项,您需要准备什么工具和设施,才能提供有效支持? 业务模型和授权 当我们使用术语“许可协议”时,我们指的是客户与 Web 服务提供商之间就 Web 服务的使用所达成的协议。除非您的业务模型是匿名的且任何人都可以访问,否则很可能会涉及许可协议。例如,建立帐户或订阅时可能会要求客户接受一定的使用条款。在某些情况下会要求客户先阅读或签署许可协议,才能批准其订阅。在谈到仅允许授权客户访问的 Web 服务时,我们通常使用术语“授权模型”而不是“业务模型”。 收藏授权模型 假设某个应用打算开始使用收藏服务保存收藏。出于用户保密的考虑,我们决定每个调用方都可以获得自己的数据存储区。应当如何识别存储区?如果调用方为存储区指定了名称,则可能两个调用方会指定相同的名称,我们无法将他们区分开来。我们可以提供一种 CreateStore 方法,用于返回唯一的数据存储区标识符。但是,如果唯一标识符丢失或被盗怎么办?由于我们没有将唯一标识符绑定到特定调用方的信息,因此我们无法检索丢失的标识符。对被盗的标识符,我们也将束手无策。事实上,我们甚至无法确认报告标识符被盗的人与创建数据存储区的调用方有任何关系。 总之,我们最好要求客户登录后进行订阅。这样,我们便可以收集足够的联系信息,以处理丢失或被盗的帐户标识符或密码。如果我们检测到某个特定应用使用收藏服务的方法有问题,我们还可以通过这些联系信息与之取得联系。 到此为止,我们可以确定我们的授权模型应该为:为提供了联系信息(并或许已阅读了保密政策或其他声明)的开发机构授予免费、终生无限制的使用许可协议。但是,我们决定将系统设计为能够支持更复杂的业务模型,以便查看对整个系统设计的影响。 在第一阶段中,收藏服务被授权给打算在其应用中使用该服务的开发机构。授权的规则如下: 在指定的时间段内被授权者可以无限制地访问服务。 被授权者必须预先支付服务费用。收费比率将根据授权时间的长短以及被授权者管理其收藏的最终用户的总数量决定。 许可协议到期前一个月,将通过电子邮件通知被授权者。 许可协议到期前一周,将通过电话通知被授权者。 许可协议期满后,将给予被授权者十天的宽限期。 开始授权过程时,必须与客户帐户代表取得联系。许可协议生效前,所有费用都将以发票方式通知被授权者,同时必须收到被授权者支付的费用。许可协议生效后,将通过电子邮件将使用收藏服务所需的所有信息通知被授权者的业务联系人。协议生效后,24 小时之内收藏服务可能无法识别新的被授权者。 所有新许可协议的有效期为三个月,收费比例为每位用户 $0.00。三个月期满后,许可协议可以更新为三个月、六个月、一年或两年。费用的收取将根据被授权者管理其收藏的用户数量来决定。功能规格(英文)定义了费用的计算方法。 为了计算续订许可协议的费用,以及在发生付帐纠纷时保护我们的权益,收藏服务会将每一次调用及其结果(成功、客户端错误或服务器错误)都记录到 Web 服务。 请注意,要求 MSDN 公布其实际实现该授权模型所有功能的示例服务是不切实际的。例如,我们没有客户帐户代表(他们答复新的许可协议申请,或在许可协议到期前一周通知被授权者)。我们也并不想对使用示例服务的人收取费用。但是,我们认为设计一个可以支持此授权模型的系统是非常重要的。在实际的实施过程中,我们将作出一些修改,以便尝试已开展的服务,而不必为获取许可协议而争论不休。当然,我们会指出我们在设计和实施上的不同之处。但愿这不会太复杂。 实现收藏中的授权 客户通过收藏 Web 站点申请订阅或更改帐户信息。Web 站点将验证输入的数据,将申请传递到 Licensing 组件,并显示已收到申请的确认信息。一般来说,收藏服务不会立即批准订阅或更改帐户信息,而是将挂起的申请保存起来,由客户帐户代表进行验证。当接受申请后,将向被授权者的联系人发送电子邮件,确认申请已完成。 Licensing 组件实现了授权模型的业务逻辑。每种授权组件方法的基本结构都相同:初始化 Audit 对象以创建审核日志项,验证输入的参数,调用存储的过程以更新相应的数据库,在需要时发送电子邮件通知,用方法的结果更新 Audit 对象,并保存审核日志项。某些业务规则是在存储过程(而不是 Licensing 组件)中强制执行的。电子邮件通过 IIS SMTP 服务发送。 我们的授权模型流程通过存储在 Licensee 和 Notifications 数据库中的一套状态标志来实施。例如,当某个潜在客户申请新许可协议时,新的被授权者记录将写入 Licensees 数据库,其状态设为 pending。同样,发送许可协议续订通知时,该通知也将记录在 Notifications 数据库中。 在业务模型的真实实现过程中,在批准新的许可协议或更改联系人信息之前,客户帐户代表将验证客户的联系信息。“收藏许可协议管理系统 (FLMS)”是基于 Web 的应用,客户帐户代表可以使用该应用查看挂起的申请,并接受或拒绝这些申请。由于没有客户帐户代表,我们仅实现了对几个申请的支持。您可以看看这是如何实现的。与外部客户 Web 站点一样,FLMS 依靠 Licensing 组件完成大部分工作。 在我们展开的 MSDN 服务中不存在任何客户帐户代表,因此我们实施了称为 AutoAdmin 的进程,该进程检查挂起的申请,并使用 Licensing 组件的服务自动批准申请。我们还需要一种自动生成续订通知的方法。这在另一个称为 Renewals 的进程中实现,该进程每天运行一次。 为了计算续订的许可协议费用,以及记录必要的信息以解决付帐或客户保密问题的争端,我们使用前面提到的 Audit 组件,将每次申请收藏 Web 服务和 Web 站点的结果都记录在 Audit Log 数据库中。每个审核日志记录都包含以下信息:提出申请的被授权者、代表其创建申请的用户、申请的操作类型、申请操作的时间、处理申请所需的时间以及申请的结果。这些信息用于计算日常使用统计数字,这些统计数字构成了“报表”服务的核心。一旦计算出日常使用的统计数字,便可以将原始审核日志报表存档。 最后,如果我们没有适当的方法来验证 Web 服务的调用者身份,所有这些支持基础设施将不会给我们带来任何好处。我们为收藏服务选择了实施应用级别的身份验证。要使用收藏服务的应用必须首先调用 Logon 服务以获取密钥。每次申请使用收藏和报表 Web 服务时,都必须提供此密钥。如果密钥有效,才会允许继续操作。否则,访问将被拒绝。 总结 下周,我们将继续探讨在实现收藏服务过程中所遇到的设计问题,进一步讨论身份验证和授权问题。 |
关键词:
|
相关文章 |