0

我們有基於WIF的自定義活動STS。它通常由客戶端請求發佈標準安全令牌。在STS服務配置中,我們將DefaultTokenLifetime參數設置爲1分鐘。誰必須驗證STS安全令牌生存期

之後,我們每15秒用應用標記調用我們的服務器。但是1分鐘後,我們對服務器的呼叫成功完成。這是奇怪的行爲! 誰必須驗證安全令牌的ValidTo參數?

在RP(業務邏輯服務)中驗證安全令牌的最佳實踐是什麼?

UPD: 看來我們發現瞭解決方法。 通過我們使用在客戶端的後續代碼的方式:

ChannelFactory<ICalculator> calcFactory = new ChannelFactory<ICalculator>(GetClientBinding(), ServiceAddress); 
calcFactory.ConfigureChannelFactory(); 
ICalculator calc = calcFactory.CreateChannelWithIssuedToken(token); 
       for (int i = 0; i < 300; i++) 
       { 
        double sum = calc.Add(40.0, 2.0); 
        Console.WriteLine("Called. Token ValidTo: {0} but now: {1}", token.ValidTo.ToLongTimeString(), DateTime.UtcNow.ToLongTimeString()); 
        Thread.Sleep(5000); 
       } 

此代碼創建通道工廠一次,並用它每次通話。 如果我們將在每次調用時創建通道工廠,則安全令牌將被正確驗證:當令牌已過期時,服務調用將不會被驗證,並且會引發安全異常。它的工作,但它是很好的做法?

由於

回答

0

IIRC,WIF使用5分鐘的時鐘偏斜,以適應機器時鐘。這可以解釋爲什麼你的代幣在1分鐘到期後仍然被接受。

+0

Allen,我們的客戶端,服務器和sts在本地計算機上運行。但我試圖將ServiceConfiguration.MaxClockSkew設置爲1秒 - 沒有結果 –

+0

發現了類似的問題http://social.msdn.microsoft.com/Forums/zh-CN/65ede7e8-98ea-46f8-8826-76534f4af5ac/security-令牌的使用壽命?論壇=日內瓦 –

相關問題