2015-10-15 65 views
-1

我目前有一個基於WCF Rest的API,它使用基於令牌的身份驗證來驗證用戶身份。但是,現在我需要實現一個額外的安全層,該層根據在覈心層中進行任何API調用之前生成的令牌來限​​制用戶。基於令牌的wcf限制

工作流程如下: 1)用戶撥打API-1,API-1返回一個令牌。 2)用戶使用該令牌並調用Core API。核心API應該識別該令牌並且僅基於令牌給予用戶特定的訪問權限。

例如,我有一個FormService類,它有3個方法:SaveForm,GetForm,AddUserToForm。 我需要生成一個令牌,FormService會識別它​​只允許訪問SaveForm或GetForm或所有方法。如果用戶沒有訪問權限,則返回未經授權的錯誤消息。 我不太確定如何解決這個問題。我不希望每次有人撥打電話來查詢訪問時都會查詢靜態映射表。我也不確定如何生成這些令牌,然後可以稍後用於特定的訪問。任何想法將有所幫助

+0

所以你想有效地存儲令牌?那是什麼問題? – lucrativelucas

+0

嗯是以最有效的方式存儲和使用該令牌進行特定訪問。 – brasewel

回答

0

我pesonnally存儲令牌在WCF緩存中。 當用戶第一次調用您的API(假設他沒有登錄並且調用是身份驗證)時,API會驗證身份(登錄名/密碼),生成令牌並將其發回給用戶並將其存儲。高速緩存(我persannly無效每隔兩小時緩存一次

生成令牌,我用這個。

var time = BitConverter.GetBytes(DateTime.UtcNow.ToBinary()); 
var key = Guid.NewGuid().ToByteArray(); 
token = Convert.ToBase64String(time.Concat(key).ToArray()); 

This answer約興田主題是非常好的 你可以找到基於令牌的更多信息認證here

希望能幫助到你。