【发布时间】:2009-06-18 17:27:57
【问题描述】:
我正在开发需要客户端使用其用户名和密码登录的自定义客户端/服务器应用程序。用户帐户与 Windows/AD 帐户没有任何关系。登录后,客户端应用程序将向服务器系统请求其他服务。
我的问题是实现这一点的最佳方法是什么?什么样的建筑最适合这里?我猜需要实现某种票证/令牌认证系统???
谢谢
【问题讨论】:
标签: security authentication client-server token
我正在开发需要客户端使用其用户名和密码登录的自定义客户端/服务器应用程序。用户帐户与 Windows/AD 帐户没有任何关系。登录后,客户端应用程序将向服务器系统请求其他服务。
我的问题是实现这一点的最佳方法是什么?什么样的建筑最适合这里?我猜需要实现某种票证/令牌认证系统???
谢谢
【问题讨论】:
标签: security authentication client-server token
实际上,您可能希望实现一个在不同部分(登录服务器、客户端、应用服务器)之间传递“票证”的系统。此票证将包含基本信息,例如用户 ID(用户名、行 ID 等)。此票证将使用授权服务器共享的密钥进行加密,或者将使用服务器共享的密钥加盐的票证内容的哈希值进行标记。第一种方式使只有授权服务器可以创建和读取票证,第二种方式使授权服务器可以验证只有授权服务器可以创建票证,但允许任何人读取票证。所有应用服务器都会在继续执行任何应受保护的操作之前检查票证(通过尝试解密或验证哈希匹配)。如果这是一个网络应用程序,那么 cookie 是存储票证的好地方。
【讨论】:
除了客户端/服务器之外,您对您的架构没有说太多,所以我假设您正在使用某种形式的表单设计器,例如 VS 中的 Windows 表单。在这些情况下,我总是使用某种形式的数据库表身份验证,因为它很容易、易于设置并且相当安全。您甚至可以通过这种方式设置组和角色,无需大惊小怪。
Table: Users
Fields: UserID PK
Login Text
Password Text
...
Table: Roles
Fields: RoleID PK
Role Text
...
Table: UserRoles
Fields: UserID FK
RoleID FK
【讨论】: