注意
从 Windows Server 2008 开始,Internet 身份验证服务(IAS)已重命名为网络策略服务器(NPS)。 本主题的内容适用于 IAS 和 NPS。 在整个文本中,NPS 用于引用服务的所有版本,包括最初称为 IAS 的版本。
根据你的设计,你可能需要一台服务器来跟踪当前登录到网络的用户。 状态服务器的主要挑战是使状态服务器数据库中的信息与实际登录的用户保持同步。 如果状态服务器中的信息不同步,则当用户无权执行此作时,可能会成功拥有多个会话。 此外,没有多个会话的用户可能会无意中受到处罚。
在实现状态服务器时,应考虑以下事项:
- 状态服务器必须在几秒钟内联机做出决策。 因此,状态服务器需要一个可缩放的基础结构,可支持每秒许多更新和查询。 关系数据库不适用于具有同时更新的此类大型查询。 关系数据库主要是为了保持数据一致,并为所有使用者提供一致的数据视图。 它们不是为快速更新而构建的。
- 多个对象之间更新的事务一致性并不重要。 这是因为状态服务器可以容忍一个小的机会窗口。 但是,如果某个 RADIUS 服务器在更新中间关闭,则单个更新的事务一致性对于减少使状态服务器处于不一致状态的可能性非常重要。
- 持久性(将网络的状态保存到持久性存储)并不重要,因为持久性信息会很快与网络的实际状态不同步。
- 如果网络上支持 ISDN 或其他形式的多链接,状态服务器应能够处理使用这些功能的方案。
一种可能的设计是实现身份验证扩展 DLL 和授权扩展 DLL。 其中每个 DLL 都可以通过网络与数据库进行通信。 授权扩展 DLL 可以使用有关当前登录到网络的人员的信息更新数据库。 身份验证扩展 DLL 可以查询数据库以获取此信息,以确定是接受还是拒绝特定用户的身份验证请求;如果用户已登录,请求将被拒绝。
授权扩展 DLL 更新状态服务器数据库的优点是授权扩展 DLL 有权访问有关经过身份验证的用户的详细信息。 授权扩展 DLL 有权访问 NPS 授权机制中的所有授权属性。 例如,某些用户可能具有允许他们具有多个会话的授权。 状态服务器应将此类用户视为特殊情况。