G'day Kev,
sorry for the late answer.
4.1 (roster access) would be nice to clarify that this is independent of the
roster stuff in 6121, despite looking similar (none,to,from,both).
It is related to RFC 6121, there is only "none" and "both" in addition
for managing the permission
4.2. To which entities should this be sent? All entities including remote
servers? Surely it shouldn’t be sending this without negotiation?
It is sent to the managing entity only, so it can know which permission
has been allowed by server administrator. There was negociation in
previous versions, but it was requested to remove it to simplify the
implementation. Indeed, it makes sense to give the permissions in the
configuration and only advertise the managing entity of what it can do.
As the "client mode" has been removed following the discussion after the
last veto, the negociation doesn't seem necessary anymore.
4.3 might be nice to clarify that this is standard 6121.
it is written "(as described in RFC 6121 [2] section 2),", is this not
enough ?
5.1 the MUST on default value here seems out of place. I’d suggest simply “This
is the usual case” or such.
The MUST is here to assure that in case of omission, there is no
dangerous permission given. It is inherited from the previous revisions
where there were a negociation, but it is still appropriate here in my
opinion.
5.3 - the forwarded element needs to be wrapped explaining why the stanza is
being forwarded.
indeed, according to XEP-0297 business rules, I should (and will) add this:
" 5. When a forwarded stanza forms part of an encapsulating protocol,
the <forwarded/> element SHOULD be a child of a tag of that protocol,
and SHOULD NOT be included as a direct child of the transmitted stanza."
"The server sees that forwarded message type is ‘headline’” - it’s not clear
to me what it being headline has to do with permissions here.
After a discussion in a MUC room with Sergey Dobrov, we have thought it
would be safer to limit the type to "headline" because with other types
you can fake message from managed entity. But again that's inherited
from "client mode" of previous revisions, I guess we can remove it now
(because the component is validated by the server administrator).
There should be some normative language here explaining what these checks are.
There are only 2 checks to do (message type - which may disappead has
just said -, and message from which MUST be the bare jid of the managed
entity). Using a normative language for that looks like a bit
overcomplicated.
What happens if the priv. ent. tries to send a stanza it’s not allowed to?
As explained at the end of 5.1, the server returns a not-authorized
stream error.
6.1 should say how the directed presence is formed. (Presumably full JID from,
component JID to, etc.). I think this is explicitly when the managed entity
sends a broadcast presence. I think this is what 6.3 has in the examples, but
examples aren’t normative.
The norme is RFC 6121 section 4.6 (quoted at the end of 6.1), the
example is here just to be more explicit. The beginning of 6.1 explain
that it is the presence of the managed entity which is sent to the
privileged entity.
Maybe it's not clear enough that managed entity is necessarily a full
jid (it's a connected resource) ?
general: I dislike using namespace=‘presence’, when ‘presence’ isn’t an XML
namespace.
I understand that, but there is no specific namespace for <PRESENCE/>
and <MESSAGE/>, and that was a way to stay coherent with the <IQ/>
permissions. As today the protoXEP has been restricted to only "roster"
"message" and "presence", I can rename the attribute to something else.
6.4. All presence, including sub requests and errors?
indeed it is not necessary to have sub request and errors, I'll restrict
that on next revision.
7. SecCon, probably needs to include extra bits about ensuring the privent
doesn’t send anything the manent wouldn’t be able to, and general could do with
fleshing out.
I can add some bits yes.
My last point, though, is that this doesn’t allow a component to implement
presence-based pubsub stuff (not even the limited PEP profile), which it sets
out to do, as it doesn’t have any way of delegating the incoming publishes,
manual subscribes/unsubscribes, configuration etc. to the component. This seems
significant!
It can only be used for PEP when namespace delegation (XEP-0355) is also
active, that's why I have proposed the 2 protoXEPs. But privileged
entity can also be used for other things e.g. a component which manage
the roster (a gateway for instance).
/K
Thanks for your feedbacks.