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);
}
此代碼創建通道工廠一次,並用它每次通話。 如果我們將在每次調用時創建通道工廠,則安全令牌將被正確驗證:當令牌已過期時,服務調用將不會被驗證,並且會引發安全異常。它的工作,但它是很好的做法?
由於
Allen,我們的客戶端,服務器和sts在本地計算機上運行。但我試圖將ServiceConfiguration.MaxClockSkew設置爲1秒 - 沒有結果 –
發現了類似的問題http://social.msdn.microsoft.com/Forums/zh-CN/65ede7e8-98ea-46f8-8826-76534f4af5ac/security-令牌的使用壽命?論壇=日內瓦 –