2012-10-04 37 views
4

我有要求在我的API中允許模仿(「充當」)。因此具有適當權限的用戶可以作爲另一個用戶來使用API​​。我想知道這個領域是否有一些具體的策略?爲RESTful API尋找身份驗證/模擬策略

我可以創建一個端點來開始和結束模擬。開始模擬可能涉及獲取用戶及其權限,並將其加載到內存中以用於當前請求,這很容易。隨後的要求呢?添加指示「模擬用戶」的HTTP標頭是否是不正確的做法?如果該標題存在,請使用它對隨後的請求進行身份驗證?如何使用該UserId的cookie?還是附加信息?

是否有額外的好處(假設.NET impl)將模擬用戶分配給Thread.CurrentPrincipal?當前的權限和角色實現是自定義的,基本上使用了一個位數組(儘管這是在將來的變化中)。

回答

4

HTTP不包含對委託憑證/模擬的任何本機支持,所以將HTTP基本認證與自定義標頭的組合指示客戶端正在嘗試扮演哪個其他用戶將會很好。

但是,我會避免用「開始和結束模擬」的想法污染你的API。這意味着必須在API調用之間維護有狀態的會話知識,並且這會使服務器端更難管理。

我只想讓客戶端在每次調用時都傳遞所有必需的信息(他們的信用和模擬主體),並且每次都針對被調用的資源驗證它們。