Publisher Identification¶
Generally, PubSub is used to decouple publishers and subscribers. Publishers do not have any knowledge of subscribers and vice versa.
Depending on your app design, it may be useful however for a subscriber to know the identity of a publisher.
In the Crossbar.io Config¶
Disclosure of caller identity can be configured as part of the Crossbar.io config, e.g.
"roles": [
{
"name": "anonymous",
"permissions": [
{
"uri": "",
"match": "prefix",
"allow": {
"call": true,
"register": true,
"publish": true,
"subscribe": true
},
"disclose": {
"caller": true,
"publisher": true
}
}
]
}
]
In the above example, the identity for publishers which have the role
anonymous
is diclosed to all subscribers. Limiting this to specific
URIs or URI patterns works just like for other permissions.
We provide a full working example.
From a Dynamic Authorizer¶
Since the authorizer
replaces the permissions
dict, the
authorizer has to take care of the disclose option as well - if
disclosure is desired (otherwise the default is to not disclose). To do
so, just return "disclose": true
as an additional argument in the
return of your authorizer.
Note: This is a change to the previous behavior, where the caller or publisher needed to request the disclosure of its identity on each call or publication. This was not ideal in that it led to the possibility of a callee receiving caller identity or not based on a caller’s decision. For publisher disclosure, having this at the control of the subscriber would have meant either having an additional serialization of the event (with the identity details), which is something we are loath to do for performance reasons) or having all subscribers receive the details once a single subscriber has requested them. In the end it seemed the cleanest solution across both RPC and PubSub to have this set in the config.