1

我有Azure移動服務和AD設置進行身份驗證。azure移動服務活動目錄認證X-ZUMO-AUTH令牌在登出後在郵遞員中有效

通過移動應用程序註銷和登錄完美作品。

AD應用迴應網址是https://test.azure-mobile.net/signin-aad

client = new MobileServiceClient (applicationURL, applicationKey); 

var authResult = await client.LoginAsync(this, MobileServiceAuthenticationProvider.WindowsAzureActiveDirectory); 

var data = await client.InvokeApiAsync("testAPI", HttpMethod.Get, null); //Works 

client.Logout(); // LOGOUT 

var data = await client.InvokeApiAsync("testAPI", HttpMethod.Get, null); //Unauthorized Error at mobile side. Request not going to API 

這工作是完美的。

但是,如果我在LOGOUT之後從authResult複製了令牌,則可以使用相同的令牌從郵遞員調用API。

頁眉:X-謨-AUTH→令牌

我如何可以驗證令牌? Azure移動服務端需要進行的任何設置才能驗證和防止此問題?

回答

2

當您註銷客戶端時,身份驗證令牌將從客戶端中刪除,但沒有任何消息傳遞給服務器以指示此令牌現在無效。因此,如果令牌存儲在其他地方並重新使用,它仍然有效,直到它到期。

我不確定有這樣做的好方法。您可以重置網站的主密鑰,但會使所有其他令牌無效,因此這不是一個真正可行的選項。您可以在服務器上存儲無效令牌列表,並檢查每個請求,但會在每個請求中添加查找。

這裏有一個類似的答案和其他幾個環節的另一個問題:Logout/invalidate a JWT

+0

如何檢查服務器上的無效令牌? –

+1

您需要創建一個ApiController,它接受一個令牌並將其添加到某種存儲(數據庫,Azure表等)中。當客戶端註銷時,還需要將令牌發送到此新控制器,以便將其記錄爲無效。然後,每進入一個請求,您都會檢查該令牌是否存在。如果確實如此,那麼令牌無效。您可以在到期過期後將其刪除。從這個答案看#2:http://stackoverflow.com/a/23089839/3516125。其他搜索「無效智威湯遜」會給你一些其他的方法。 – brettsam

相關問題