我目前有一个基于WCF Rest的API,它使用基于令牌的身份验证来验证用户。但是,我现在需要实现一个额外的安全层,该层根据在核心层中进行任何API调用之前生成的令牌来限制用户。
工作流程如下: 1)用户调用API-1,API-1返回一个令牌。 2)用户使用该令牌并调用Core API。 Core API应识别令牌,并仅根据令牌为用户提供特定访问权限。
例如,我有一个FormService类,它有3个方法:SaveForm,GetForm,AddUserToForm。 我需要生成一个令牌,FormService会识别该令牌只允许访问SaveForm或GetForm或所有方法。如果用户没有访问权限,则返回未经授权的错误消息。 我真的不确定如何解决这个问题。我不希望每次有人拨打电话检查访问时都会查询静态映射表。我也不确定如何生成这些令牌,然后可以在以后用于特定访问。任何想法都会有所帮助
答案 0 :(得分:0)
我将令牌存储在WCF缓存中。 当用户第一次调用您的API时(假设他没有登录并且调用是身份验证),API会验证身份(登录名/密码),生成令牌,将其发送回用户并将其存储在缓存(我每两个小时就会使缓存失效一次。
要生成令牌,我使用:
var time = BitConverter.GetBytes(DateTime.UtcNow.ToBinary());
var key = Guid.NewGuid().ToByteArray();
token = Convert.ToBase64String(time.Concat(key).ToArray());
关于主题的This answer非常好。 您可以找到有关基于令牌的身份验证here
的更多信息希望它有所帮助。