View Issue Details

IDProjectCategoryView StatusLast Update
000930010000-005: Information ModelSpecpublic2024-03-19 21:32
ReporterMartin Regen Assigned ToJeff Harding  
PrioritynormalSeverityminorReproducibilityhave not tried
Status assignedResolutionopen 
Summary0009300: Ambiguity on durable subscription Ids.
Description

Currently, the only way for a client to get back to a durable subscription is is by remembering the subscription Id for the time being.
If there is a problem on the client side and the id is lost, there is no way to recover and the durable subscription may continue to run for days.
In addition a new one has to be created with a known id.

i) It would be nice to have a way to identify subscriptions that are available for transfer from a newly created session, e.g. by having a method which returns the ids of available subscriptions.
ii) In addition I'd like a way to set an identification on a durable subscription, that can be set by the client and be used for recovering a subscription that supposes to exist. E.g. when a duplicate is created, it keeps using the existing.

There is the same issue with normal subscription transfer. If the identity is not wisely chosen, it might be possible to steal a subscription unintentionally, if e.g. a restart of the server caused the server to begin counting subscription Ids from 0, multiple clients reconnect and may try to steal recreated subscriptions.

This issue is described in another Mantis --> see also 9290

TagsNo tags attached.
Commit Version
Fix Due Date

Activities

Martin Regen

2023-12-05 19:24

developer   ~0020493

Last edited: 2023-12-05 19:57

A possible solution is to lock a subscription to a specific session. The identity of the session is the application Uri.

The idea would be to implement two methods
i) a method to lock a subscription to an application Uri, so that the subscription can only be transferred to a session with the same application Uri

e.g. session.SetSubscriptionLock(uint []subscriptionId)
e.g. session.SetSubscriptionNonTransferable(uint []subscriptionId)
e.g. session.BindSubscriptionToClient(uint []subscriptionId)

ii) a method to look up subscriptions that were created by the application Uri of the active session

session.GetSubscriptions(out uint [] subscriptionIds)

The description would indicate that only subscriptions are returned which are related to the application Uri which owns the session.

The Transfer subscription service should reject to transfer locked subscriptions to other application Uris.

An update of the client application certificate does not affect the identity because the application Uri remains unchanged and the new cert may have to be trusted.

If a server auto accepts untrusted certificates it shall not be allowed to lock subscriptions because of the security risk of app uri tampering.

The client has to be trusted and shall use at least signed communication.

Jim Luth

2024-03-19 21:18

administrator   ~0020949

Last edited: 2024-03-19 21:27

Agreed to add sub-Variable to Subscription diagnostic to hold Client information (from the Session diagnostic) about the session that currently or last "owned" the subscription. This is because the Session diagnostic goes away when the Subscriptions once owned by the Session are still alive in the Server.

Also add methods to the Server Object for Administrators to Close Sessions and Subscriptions owned by others.

Issue History

Date Modified Username Field Change
2023-12-04 15:16 Martin Regen New Issue
2023-12-04 15:21 Martin Regen Description Updated
2023-12-04 15:25 Martin Regen Description Updated
2023-12-05 19:24 Martin Regen Note Added: 0020493
2023-12-05 19:27 Martin Regen Note Edited: 0020493
2023-12-05 19:29 Martin Regen Note Edited: 0020493
2023-12-05 19:37 Martin Regen Note Edited: 0020493
2023-12-05 19:41 Martin Regen Note Edited: 0020493
2023-12-05 19:43 Martin Regen Note Edited: 0020493
2023-12-05 19:57 Martin Regen Note Edited: 0020493
2023-12-05 20:07 Jim Luth Assigned To => Matthias Damm
2023-12-05 20:07 Jim Luth Status new => assigned
2023-12-05 20:07 Jim Luth Commit Version => 1.05.04 RC
2023-12-05 20:07 Jim Luth Fix Due Date => 2024-01-30
2024-03-19 21:18 Jim Luth Note Added: 0020949
2024-03-19 21:20 Jim Luth Note Edited: 0020949
2024-03-19 21:27 Jim Luth Note Edited: 0020949
2024-03-19 21:29 Jim Luth Commit Version 1.05.04 RC =>
2024-03-19 21:29 Jim Luth Fix Due Date 2024-01-30 =>
2024-03-19 21:31 Jim Luth Assigned To Matthias Damm => Jeff Harding
2024-03-19 21:32 Jim Luth Project 10000-004: Services => 10000-005: Information Model