2012-02-09 100 views
3

我一直在努力在c#中實現api。實施進展順利,但我確實遇到了一個問題。保存身份驗證令牌的最佳方法?

當我的庫已經對api進行授權時,我有一個auth_token,我用它來查詢web服務。

令牌需要在程序運行之間保持不變,因爲它對用戶保持不變(儘管我會在應用程序啓動時檢查它是否仍然有效)。

出於測試目的,我基本上只是將令牌保存到保存在應用程序根目錄中的文本文件中。

這工作正常,但這是最好的方式?

不知道用戶會明白它會被保存在一個明文文件中(即使它在他自己的pc上)。

那麼,保存這種令牌的一般做法是什麼?

+0

對值進行加密,然後將其保存到用戶配置文件中,然後我將加密整個配置文件,以便它對機器本身是唯一的。請不要以純文本的形式存儲這種類型的信息,您有權質疑這是否是一個「好主意」,因爲它不是。 – 2012-02-09 15:37:58

+0

段落是你的朋友。使用它們。 – Oded 2012-02-09 15:38:07

回答

0

我會用Windows Data Protection有很多關於如何使用C#的examples。它使用用戶特定的密鑰來加密數據。只有用戶自己可以解密它。另外請務必在服務器和客戶端之間的傳輸過程中保護數據。

+0

即使將信息保存在配置文件,數據庫,註冊表等中,也可以使用Windows Data Protection API。 – 2012-02-09 15:52:41

0

創建在項目屬性項目中的設置文件,AuthToken屬性添加到已知的設置(可能在用戶級別),然後使用:

Properties.Settings.Default.AuthToken = userAuthToken; 

如果你認爲他們會需要它隱藏,加密或編碼userAuthToken,所以它不太明顯。

0

您可以驗證在asp.net或windows環境下是否使用了api(它足以檢查請求是否爲空),並且在第一種情況下使用cookie,將後者保存在註冊表項上。