我感兴趣的是在跨平台分布式系统中可以使用哪些策略来处理用户身份验证和授权。我希望能够将系统中的操作标记为属于某个用户的操作,并且只允许某些用户执行某些操作。
背景:系统目前仅在下使用,用户发起的操作目前只被标记为来自用户的特定计算机。一个操作基本上包括使用cpu进行一些计算并返回结果。
目前没有进行任何授权,也没有对用户(或计算机之间)进行任何身份验证。系统是以低权限运行的服务(使用网络服务帐户)。数据不敏感,本地网络上的所有用户都可以根据自己的心境使用该系统。
系统既可以部署在同构的Windows域设置中,也可以部署在没有域控制器的工作组中,或者与一组不属于域的工作计算机一起部署。
问题
为了增加系统的功能,例如收集每个用户的使用统计数据或显示正在使用计算机的人,就必须跟踪单个用户。此外,如果某些操作仅允许某些用户执行(例如,更改系统的某些设置),则还需要某种形式的授权。
我对Windows的实现方式有很好的理解,并且使用Windows中内置的身份验证和授权功能,在同构的Windows域设置中添加这类功能是非常简单的。这也消除了只对此特定系统有效的特殊帐户分配给系统的需要--一旦用户正常登录,所有身份验证和授权都可以完成,而不需要任何额外的用户交互。
但是如果系统能够在Mac上运行呢?还是Linux?如果它应该在Windows域中的一些用户、OSX上的其他用户和一些运行Linux的工作机器的混合环境中运行呢?(实际的系统可以移植到所有这些系统上,并处理跨平台通信等等)。我对在这些平台上处理身份验证和授权的方式知之甚少,而不了解如何在平台间交互时实现认证和授权。
在这样的分布式系统中,是否有任何用于跨平台用户身份验证和授权的好策略?请注意这里“跨平台”的双重用途--既可以为不同的平台编译程序,也可以在平台之间进行交互。
我将问题标记为C++,因为这是系统使用的语言,但我愿意接受任何可以使用C++进行交互的语言。任何想法(包括疯狂的架构改变)都欢迎!
更新:
一个例子说明了能够实现什么目标是有趣的:
用户A登录到机器1,这是一台Windows机器。
用户A打开系统的管理界面,选择机器2( Linux系统)并调整设置。系统验证用户A实际上拥有允许这样做的足够权限。
由于A在登录时已经核实了他/她的身份,所以最好允许他/她更改此设置,而不必提供其他凭据。
发布于 2011-01-26 12:44:29
您应该使用SAML令牌进行基于声明的身份验证,SAML令牌跨平台工作。
在windows端,有一个库用于此: Windows标识基础。
请参阅:http://msdn.microsoft.com/en-us/security/aa570351
https://stackoverflow.com/questions/4657141
复制相似问题