因此,在过去的几天里,我一直把头撞在墙上,试图了解WCF的安全架构是如何工作的。我心中有一个目标,我不确定我是否会朝着正确的方向前进。
系统
我们使用Active和数据库的组合来管理身份验证和授权。客户端应用程序通常使用其Windows凭据进行身份验证,应用程序根据数据库表检查这些用户是否被允许进行身份验证,然后查看它们是否有权使用所请求的资源。当前设置让每个客户端直接与数据库通信以执行这些检查。
目标
我们希望使用安全令牌服务对客户端进行身份验证,并为顶级资源提供“高级”授权。如果提供的SecurityToken有效,则提供数据或执行操作的服务将运行。此外,如果令牌不包含特定权限,则将查询令牌服务,以查看用户是否具有初始创建令牌时未加载的权限。(我们的数据库中有300多个权限,这可能会给拥有多个权限的用户带来相当大的令牌)
我不懂的
1)我理解令牌创建过程,但对于客户端如何获取、存储令牌并将令牌发送给它打算使用的服务,我有点不知所措。每个"worker“服务是否需要一个唯一的令牌(即调用CalculatorService需要令牌的一个版本,而SaveResultService需要生成一个新的令牌?)我可以手动请求、保存和发送令牌吗?
2)在“工人”服务方面,验证令牌的过程是什么?我的“工人”服务必须与令牌服务联系以验证令牌吗?还是它只是读取令牌,并假定,如果它是正确的签名,令牌是真实的,并从这个角度操作?
( 3)是否可以手动加密我的令牌,并将其存储在客户端,以便在它们有效时使用(从而避免对每个服务调用进行身份验证),从而使web客户端能够保存页面加载之间的令牌,并在连续调用时重用它?
谢谢你帮助解决我缺乏理解的问题
发布于 2010-12-18 08:37:36
您应该查看Windows标识基础的示例&它提供了包装声明所需的类和实现,您可以使用或查询auth和authz。
http://msdn.microsoft.com/en-us/library/ee517291.aspx
您正在寻找的是一个持久的令牌缓存。-令牌有生存期,通常需要更新,WIF在大多数情况下都会在引擎盖下进行更新。
您可以使用WIF手动请求和附加令牌并池代理。
https://stackoverflow.com/questions/4454636
复制相似问题