Re: [Standards] Comments on SIFT

2010-03-06 Thread Jason

interesting - I've built a variation on this for offline messages,
but allowing quite complex allow criteria. I couldnt make xmpp do it 
(I'm not saying xmpp couldnt, but just that I couldnt figure out how) as 
my case seemed to require altered routing rules and a few other issues 
surrounding my frequent, but momentary presence requirement, so I ended 
up just using xmpp as a transport.


Cheers.



Waqas Hussain wrote:

While implementing mod_sift for Prosody, I saw some possibilities for
improvement and had thoughts about issues. Some of these follow.


1. Remove disallowed child elements for filtered messages and presence.

Here's a typical identi.ca message:

  message from=upd...@identi.ca/xmpp001daemon to=wa...@jaim.at type=chat
  bodyevan: RT @sil doom. the Shuttle computer I'm setting up for
dad can't read the hard drive. Won't boot from USB, has no CD drive, I
have no USB ... [23931040]/body
  html xmlns=http://jabber.org/protocol/xhtml-im;
  body xmlns=http://www.w3.org/1999/xhtml;
  : RT @doom. the Shuttle computer I'm setting up for dad can't read
the hard drive. Won't boot from USB, has no CD drive, I have no USB
...
  a href=http://identi.ca/evan;evan/a
  span class=vcard
  a title=Stuart Langridge class=url href=http://identi.ca/user/279;
  span class=fn nicknamesil/span
  /a
  /span
  a 
href=http://identi.ca/conversation/24011046#notice-23931040;[23931040]/a
  /body
  /html
  entry xmlns=http://www.w3.org/2005/Atom;
  source
  titleevan - Identi.ca/title
  link href=http://identi.ca/evan; /
  link rel=self type=application/atom+xml href=http://identi.ca/evan; /
  link rel=license href=http://creativecommons.org/licenses/by/3.0/; /
  iconhttp://avatar.identi.ca/1-96-20090819204503.jpeg/icon
  /source
  titleRT @sil doom. the Shuttle computer I'm setting up for dad
can't read the hard drive. Won't boot from USB, has no CD drive, I
have no USB .../title
  author
  nameevan/name
  urihttp://identi.ca/user/1/uri
  /author
  actor xmlns=http://activitystrea.ms/spec/1.0/;
  object-typehttp://activitystrea.ms/schema/1.0/person/object-type
  id xmlns=http://www.w3.org/2005/Atom;http://identi.ca/user/1/id
  title xmlns=http://www.w3.org/2005/Atom;Evan Prodromou/title
  link rel=alternate type=text/html href=http://identi.ca/evan;
xmlns=http://www.w3.org/2005/Atom; /
  link rel=avatar type=image/jpeg
xmlns:ns1=http://purl.org/syndication/atommedia; ns1:height=353
xmlns:ns2=http://purl.org/syndication/atommedia; ns2:width=353
href=http://avatar.identi.ca/1-353-20090819204502.jpeg;
xmlns=http://www.w3.org/2005/Atom; /
  link rel=avatar type=image/jpeg
xmlns:ns1=http://purl.org/syndication/atommedia; ns1:height=96
xmlns:ns2=http://purl.org/syndication/atommedia; ns2:width=96
href=http://avatar.identi.ca/1-96-20090819204503.jpeg;
xmlns=http://www.w3.org/2005/Atom; /
  link rel=avatar type=image/jpeg
xmlns:ns1=http://purl.org/syndication/atommedia; ns1:height=48
xmlns:ns2=http://purl.org/syndication/atommedia; ns2:width=48
href=http://avatar.identi.ca/1-48-20090819204503.jpeg;
xmlns=http://www.w3.org/2005/Atom; /
  link rel=avatar type=image/jpeg
xmlns:ns1=http://purl.org/syndication/atommedia; ns1:height=24
xmlns:ns2=http://purl.org/syndication/atommedia; ns2:width=24
href=http://avatar.identi.ca/1-24-20090819204503.jpeg;
xmlns=http://www.w3.org/2005/Atom; /
  point xmlns=http://www.georss.org/georss;45.5088375 -73.587809/point
  preferredUsername
xmlns=http://portablecontacts.net/spec/1.0;evan/preferredUsername
  displayName xmlns=http://portablecontacts.net/spec/1.0;Evan
Prodromou/displayName
  note xmlns=http://portablecontacts.net/spec/1.0;Montreal hacker
and entrepreneur. Founder of identi.ca, lead developer of StatusNet,
CEO of StatusNet Inc./note
  address xmlns=http://portablecontacts.net/spec/1.0;
  formattedMontreal, Quebec, Canada/formatted
  /address
  urls xmlns=http://portablecontacts.net/spec/1.0;
  typehomepage/type
  valuehttp://evan.prodromou.name//value
  primarytrue/primary
  /urls
  /actor
  link rel=alternate type=text/html
href=http://identi.ca/notice/23931040; /
  idhttp://identi.ca/notice/23931040/id
  published2010-03-06T20:01:22+00:00/published
  updated2010-03-06T20:01:22+00:00/updated
  link rel=ostatus:conversation
href=http://identi.ca/conversation/24011046; /
  forward ref=http://identi.ca/notice/23928915;
href=http://identi.ca/notice/23928915;
xmlns=http://ostatus.org/schema/1.0; /
  content type=htmlRT @span class=vcarda
href=http://identi.ca/user/279; class=url title=Stuart
Langridgespan class=fn nicknamesil/span/a/span doom. the
Shuttle computer I'm setting up for dad can't read the hard drive.
Won't boot from USB, has no CD drive, I have no USB .../content
  /entry
  /message

Look at the size of that. Should I laugh or cry?  This should be reduced to:

  message from=upd...@identi.ca/xmpp001daemon to=wa...@jaim.at type=chat
  bodyevan: RT @sil doom. the Shuttle computer I'm setting up for
dad can't read the hard drive. Won't boot from USB, has no CD drive, I
have 

Re: [Standards] Enterprise Users Groups

2010-02-24 Thread Jason Eacott

Isnt this just an xmpp workgroups app?

Fasihullah Askiri wrote:

Hi All,

We are trying to use XMPP in our application where there will be a user 
group like Finance or HR to which the application would want to add 
users. We are planning to write a custom XMPP component which would 
check for presence of the users in the group and should be able to 
direct queries from some other users to a member of this group. This 
application would eventually inter-op with an enterprise XMPP server so 
we would like to reduce the dependency on XMPP server configuration to a 
minimal. Also, ideally we would like that the users of the group are 
auto-subscribed and would not require the user to manually send a 
presence subscribed packet.


I am not sure if pubsub or group is what we need, please advice.

Best Regards
+Fasih


Re: [Standards] Enterprise Users Groups

2010-02-24 Thread Jason Eacott

Ignite has an implementation, and its supported with smack,
I'm not sure what other implementations exist.

Fasihullah Askiri wrote:

Great!!
What is the status of this. Is it a widely supported extension? If not, 
can I still use this by writing an external component maybe.


On Wed, Feb 24, 2010 at 2:01 PM, Jason Eacott ja...@hardlight.com.au 
mailto:ja...@hardlight.com.au wrote:


Isnt this just an xmpp workgroups app?


Fasihullah Askiri wrote:

Hi All,

We are trying to use XMPP in our application where there will be
a user group like Finance or HR to which the application would
want to add users. We are planning to write a custom XMPP
component which would check for presence of the users in the
group and should be able to direct queries from some other users
to a member of this group. This application would eventually
inter-op with an enterprise XMPP server so we would like to
reduce the dependency on XMPP server configuration to a minimal.
Also, ideally we would like that the users of the group are
auto-subscribed and would not require the user to manually send
a presence subscribed packet.

I am not sure if pubsub or group is what we need, please advice.

Best Regards
+Fasih




--
+Fasih

And be steadfast in patience, for verily God will not suffer the reward 
of the righteous to perish (11:115)


Re: [Standards] XMPP client-centric? [was: Decloaking and Temporary Subscriptions]

2010-01-22 Thread Jason Eacott

 Pedro Melo wrote:

Hi,


On Fri, Jan 22, 2010 at 5:16 AM, Jason Eacott ja...@hardlight.com.au wrote:

Peter Saint-Andre wrote:

On 1/21/10 6:08 PM, Jason Eacott wrote:

Oauth is all about impersonating other users, thats all it does!

False. OAuth is about delegating access to protected resources so that
another entity can have restricted authority to perform a given task
(the canonical example is granting a printing service access to your
online photos). OAuth is not about impersonation, it is about delegated
authorization. Those two things are very different.

fair enough,
but in practice is there really much distinction? granting a printing
service access to photos, granting another service limited access to my
private xml data store, granting another service to create pubsub nodes with
me as the owner, etc.


Yes, it is totally different. With impersonation you are the user, and
the services cannot know the difference and therefore you can't limit
what they can do as you. Impersonation is me using your login and
password.

Delegating access implies a different identification that has access
to your data, and the service can use that different identification
(and other data, like the oauth access token) to provide you with
limited access.

Bye,


sure - and with an oauth like system the target always knows.
I'll admit that in my original suggested approach that the target 
service would not know, but it was a first rough, aimed for discussion, 
and at trying to enable reuse of existing components without 
modification. So suggest workable amendments or a workable alternative.


I sense more than a small amount of nastiness here, and I dont think its 
warranted.
I know I'm not alone in thinking this particular issue is an important 
missing capability of xmpp, but if nobody's interested in the discussion 
then I'll drop it.













Re: [Standards] Fwd: Re: XMPP client-centric? [was: Decloaking and Temporary Subscriptions]

2010-01-22 Thread Jason

see below.

Peter Saint-Andre wrote:
 On 1/21/10 10:16 PM, Jason Eacott wrote:


 Peter Saint-Andre wrote:
 On 1/21/10 6:08 PM, Jason Eacott wrote:

 Oauth is all about impersonating other users, thats all it does!
 False. OAuth is about delegating access to protected resources so that
 another entity can have restricted authority to perform a given task
 (the canonical example is granting a printing service access to your
 online photos). OAuth is not about impersonation, it is about delegated
 authorization. Those two things are very different.

 Peter
 fair enough,
 but in practice is there really much distinction? granting a printing
 service access to photos, granting another service limited access to my
 private xml data store, granting another service to create pubsub nodes
 with me as the owner, etc.
 The upshot of it all is that after authority is delegated, the
 authorised proxy is allowed to act on the users behalf for whatever it
 has been given permission to do.
 For me I dont see the difference.

 If I show up at your bank with a Jason Eacott constume on, fake ID,
 etc., and withdraw all your funds, the bank thinks that you have
 completed a legitimate transaction.

 If I show up at your bank with a notarized letter signifying that I have
 power of attorney and you have explicitly authorized me with the bank to
 act on your behalf in limited ways, then if I transfer some funds to
 another account the bank won't think that you did it, they will think
 that I did it with authorization.

 I continue to think that impersonation and delegation are quite
 different relationships.

 I didn't state categorically in this
 last post that the proxy can only act in limited ways (if the user
 offers only limited authority to the service), but I dont think it
 changes the fact that at the end of the process a service is allowed to
 act on behalf of a user (various oauth api's make this feel very much
 like simply switching user hats - now I'm user x. do ...).

 It feels that way, but under the hood it's not, and from a security
 perspective it had better not be the same.

 my point is that if xmpp embraced something like this then components
 and external services could actually use things like the private xml
 storage of any user that offered authority, but instead the only options
 I know for such a service is to either reinvent xml data storage, deploy
 as a client app, or convince its users to handover user credentials.

 Correct at present.

 What does XEP-0235 not give you? How does it need to be expanded? IMHO
 you are pointing to the fact that this model is not yet in code.

great question!
actually I have built code, but it only solves a small part of the problem.
I'm not sure a modified xep can fix this (maybe I'm wrong though).

ok, so a scenario to think about:
lets say I build a simple xmpp component based search service - some 
google like variant perhaps - and lets say that part of this service 
involves storing the last search criteria for each user, so private xml 
data seems ideal.
Lets also now say that I want to make my search service available for 
simple mobile devices - midp1+http only. so I install an esb with the 
appropriate protocols for translation. (I've tried to keep this simple - 
an actual web service with html ui is also another obvious hop here)
the device is simple so implementing the bosh protocol directly is too 
expensive in terms of memory and cpu(battery).


at this point there are choices: let the esb establish connections as 
real xmpp users as required.
Establish a single connection and use oauth or similar to carry the real 
intended user info.


the first option requires that the esb knows the users real xmpp 
credentials, its totally unscalable, the search service cant access 
private xml storage, and the esb is free to do anything it wants on the 
xmpp network because as has so rightly be pointed out here unfettered 
spoofing isnt good.
the second option is better - the user authorises the esb to interact 
with my service via oauth, so now at least we havent sold the farm by 
giving real credentials to anyone. the esb could choose to implement its 
own (different) user/pass and mappings etc but its not nececarry.
but as in the first case, the service itself is still powerless to save 
the search criteria. It could of course save it locally, but thats far 
from ideal, and not the point of this discussion. The service may also 
have real reason to want to leverage many xep or other non xep component 
services in this way.


I think thats pretty much the problem I'd like to see solved, and I 
think my initially proposed flow addresses this - but it doesnt address 
the proxy identity tracking part. the xmpp server is already the 
identity gatekeeper, and xmpp messages are always sent from a given 
users server, so for me it made sense to route to be proxied messages 
back to that server for verification. but how you get all the remote 
components  users to know

Re: [Standards] XMPP client-centric? [was: Decloaking and Temporary Subscriptions]

2010-01-21 Thread Jason
to be clear I am talking about cross domain, because I dont think its 
reasonable for every new service/component/whatever to require users to 
create new accounts on the local domain should that service require the 
use of third party services.
By plugin  I mean server component or vendor specific plugin (by 
whatever means).


Dave Cridland wrote:

On Thu Jan 21 03:48:41 2010, Jason Eacott wrote:
what I mean is that xmpp clients are the only entities with any power. 
they are the only entities that can interact with anything on a 
clients behalf.  this is very different from the webserver paradigm 
where a user remotely logs in and then the server has power to BE the 
user, reuse other webservices as the logged in user (via any number of 
authentication schemes) etc.


Internally within a security domain, this is simply not the case. Within 
a security domain, servers can (and do, in some cases) act as the user.


A classic case is the widely deployed auto accept/auto subscribe 
feature in some servers, which sends out subscribe[d] stanzas per-pro 
the user.


ok maybe I wildly misunderstand xmpp?(its definitely possible).
If I have an xmpp server at somewhere.com, and install a pubsub 
component and a personal xml component at pubsub.somewhere.com and 
xml.somewhere.com and my own new service at new.somewhere.com, are you 
saying that new.somewhere.com can access xml.somewhere.com on behalf of 
any user registered at somewhere.com?
even so, this is a very limited case as most users of my service will be 
remote.


With xmpp its also possible to use other webservices, but critically 
NOT xmpp services! its not possible for example for an xmpp plugin to 
access a users pubsub node, or private xml storage AS the owner unless 
the plugin knows the users id and password and opens its own client 
connection.


Again, this is only true if you're crossing the boundary of a security 
domain. Otherwise, no, pubsub code could reach into the XEP-0049 store 
authorized as the user - it's really only cross-boundary authorization 
and delegation that are missing.


does this boundary include subdomains? I thought it did in which case 
components are generally unavailable for reuse by other components.


In the specific case of an XMPP plugin (whatever that is) accessing a 
user's pubsub node in another security domain, then in principle the 
user could allow this by setting the affiliations suitably on the 
domain, or by the plugin simply requesting a subscription. This could, 
of course, be made smoother, with a pawn-ticket system to instantly 
grant the subscription, perhaps.


this is true, but requires serious intervention by the user. My service 
wants to create a pubsub node for its own use, but its preferable that 
the currently interacting (and probably remote domain) user own the 
node(for whatever reason). Its not possible without the user correctly 
creating their own node and configuring it appropriately. this is pretty 
unreasonable request to make of my users I think - and if I need 6 other 
services...

also pubsub is about the only xep with such rich auth control anyway.

 You cant use a bosh server with your existing xmpp account without 
giving it your user/pass details.


Well, there are currently two forms of BOSH server implemented, there's 
the built-in BOSH listeners of ejabberd, and Openfire (possibly others), 
and then there's the pure proxy style of Punjab.


With the former, handing over credentials is equivalent to handing them 
to the server anyway. With the latter, then the SASL exchange itself is 
passed through, so in principle, if a mechanism is used which is secure 
against MITM attacks, the credentials are safe. (In practise, most SASL 
mechanisms designed recently assume the presence of TLS, but it'd still 
require some effort on the part of a BOSH component operator to get your 
password).


ok,  for a pure client usage of bosh (javascript etc) this is true (as 
long as you trust the javascript is talking directly to a bosh server, 
but for something like a serverside impl of a web ui chatroom, which 
itself uses bosh to connect to the xmpp network (or even just direct 
connect) then you have to give the webui provider your xmpp credentials 
first. if xmpp supported some extra (pluggable, extensible) auth scheme 
then this could be mitigated.
the alternative which exists now is to use XEP-0235 oauth but it would 
require that the chatroom component in use is itself an oauth producer.


It pains me to see all the cool xmpp component functionality about 
that I can only leverage from a client application. I dont know how 
this can best be resolved but I really think it needs to be. Allowing 
xmpp server level oauth style authentication could work, albeit a bit 
heavy, as might other strategies.


OAuth is fine for inter-domain authorization delegation, but it massive 
overkill within a domain.


agreed - and I'm not saying the answer is oauth, its just 1 way I know 
that could work

Re: [Standards] XMPP client-centric? [was: Decloaking and Temporary Subscriptions]

2010-01-21 Thread Jason Eacott



Joe Hildebrand wrote:

On 1/21/10 4:06 AM, Jason ja...@hardlight.com.au wrote:


if xmpp supported some extra (pluggable, extensible) auth scheme
then this could be mitigated.


You want something more pluggable and extensible than SASL?


no this is not about replacing any such protocols.


I dont know how to send stanzas from a component as an arbitrary user
from an account of another domain. please tell me how! this is exactly
what I need. (in my experience the stanza is sent but the recipient
server rejects it, as it should).


The messages are rejected because they are spam.  Why do you want to
impersonate people in another security domain?  I can't think of a reason
that's not evil.


Oauth is all about impersonating other users, thats all it does!, are 
you suggesting there are no usecases for Oauth?




Re: [Standards] XMPP client-centric? [was: Decloaking and Temporary Subscriptions]

2010-01-21 Thread Jason Eacott




Peter Saint-Andre wrote:

On 1/21/10 6:08 PM, Jason Eacott wrote:


Oauth is all about impersonating other users, thats all it does!


False. OAuth is about delegating access to protected resources so that
another entity can have restricted authority to perform a given task
(the canonical example is granting a printing service access to your
online photos). OAuth is not about impersonation, it is about delegated
authorization. Those two things are very different.

Peter


fair enough,
but in practice is there really much distinction? granting a printing 
service access to photos, granting another service limited access to my 
private xml data store, granting another service to create pubsub nodes 
with me as the owner, etc.
The upshot of it all is that after authority is delegated, the 
authorised proxy is allowed to act on the users behalf for whatever it 
has been given permission to do.
For me I dont see the difference. I didn't state categorically in this 
last post that the proxy can only act in limited ways (if the user 
offers only limited authority to the service), but I dont think it 
changes the fact that at the end of the process a service is allowed to 
act on behalf of a user (various oauth api's make this feel very much 
like simply switching user hats - now I'm user x. do ...).
my point is that if xmpp embraced something like this then components 
and external services could actually use things like the private xml 
storage of any user that offered authority, but instead the only options 
I know for such a service is to either reinvent xml data storage, deploy 
as a client app, or convince its users to handover user credentials.


previous posts in this thread have said there are other options 
available but I don't yet know what they are.






Re: [Standards] Decloaking and Temporary Subscriptions

2010-01-20 Thread Jason Eacott



Matthew Wild wrote:
...

You could include this tag in your presence to MUC rooms for example,
and the server would automatically send the MUCs your new presence
when it changes - currently this is sent individually to each MUC room
by the clients (ick.). Though MUCs want only the presence of a single
resource (not all, like Jingle does), hmm.

Downsides are that this requires server support, especially thinking
of e.g. gmail.com here. Probably other things I'm missing too.


again this just makes me sure that XMPP as it stands is far too client 
centric, and needs to become properly extensible from the serverside 
too. there should be a way for server extensions to do what clients can.
(I know thats not what you were suggesting here, but it might make 
implementing such things easier)


Re: [Standards] XMPP client-centric? [was: Decloaking and Temporary Subscriptions]

2010-01-20 Thread Jason Eacott

Hi Mathew - first of all, sorry for diverting this, thanks for rethreading.

what I mean is that xmpp clients are the only entities with any power. 
they are the only entities that can interact with anything on a clients 
behalf.  this is very different from the webserver paradigm where a user 
remotely logs in and then the server has power to BE the user, reuse 
other webservices as the logged in user (via any number of 
authentication schemes) etc. With xmpp its also possible to use other 
webservices, but critically NOT xmpp services! its not possible for 
example for an xmpp plugin to access a users pubsub node, or private xml 
storage AS the owner unless the plugin knows the users id and password 
and opens its own client connection. You cant use a bosh server with 
your existing xmpp account without giving it your user/pass details. It 
pains me to see all the cool xmpp component functionality about that I 
can only leverage from a client application. I dont know how this can 
best be resolved but I really think it needs to be. Allowing xmpp server 
level oauth style authentication could work, albeit a bit heavy, as 
might other strategies.


just my 2 yen.
what do u think?



Matthew Wild wrote:

2010/1/21 Jason Eacott ja...@hardlight.com.au:

Matthew Wild wrote:
...



Downsides are that this requires server support, especially thinking
of e.g. gmail.com here. Probably other things I'm missing too.

again this just makes me sure that XMPP as it stands is far too client
centric, and needs to become properly extensible from the serverside too.
there should be a way for server extensions to do what clients can.
(I know thats not what you were suggesting here, but it might make
implementing such things easier)



I didn't want to divert the original thread before it even starts, but
was curious - what do you mean by this? I don't see how XMPP can
enforce Google to implement any extension. The issue here is that the
predominant use case for decloaking is Jingle, and many Jingle users
happen to be Google Talk users.

If decloaking was done client-side then the user can simply switch to
a better client that supports it, switching server is much harder
work.

I guess I just don't understand your there should be a way for server
extensions to do what clients can.

Regards,
Matthew



Re: [Standards] XMPP client-centric? [was: Decloaking and Temporary Subscriptions]

2010-01-20 Thread Jason Eacott

I dont think the answers are easy either.
but something should be done.
I've been thinking of something like this:
imagine for a moment that we have some way for j...@a.com to give 
permission for servi...@service.com to spoof jidA's identity with 
specific permissions for any given service/role/domain/whatever.
This permission might exist in the form of a token (I'm familiar with 
oauth so I'll use tokens for now.) stored in a special part of jidA's 
XML private storage (or similar).


When a serviceA (or any jid) wants to do something as jidA it sends a 
message as usual with jidA in the from field.
serviceA's server would know it was attempting to be issued as a foreign 
user and so wraps and forwards the message to JidA's server (including 
the real from address of serviceA).
JidA's server verifies the actual from address and inspects the 
to-be-spoofed address and message contents against its local private 
store of jidA's permissions.
If permission is granted the message is reissued from jidA's server. If 
not an exception is returned.
jidA's server would also be responsible for routing any response back to 
the origin sender.


this is far from ideal I know - it adds lots of network hops for a 
start, but at least most of the existing xmpp rules stay in tact (I 
think). It allows xmpp server operators to enable/disable this 
functionality for their users or components, and gives complete control 
over what services can do what as proxies to each user/service.
I'm sure efficiencies could be manufactured to save on traffic, but in 
principle, how does this sound as a starting point for discussion?


thanks
Jason.











Peter Saint-Andre wrote:

On 1/20/10 8:01 PM, Matthew Wild wrote:

2010/1/21 Jason Eacott ja...@hardlight.com.au:

Matthew Wild wrote:
...

Downsides are that this requires server support, especially thinking
of e.g. gmail.com here. Probably other things I'm missing too.

again this just makes me sure that XMPP as it stands is far too client
centric, and needs to become properly extensible from the serverside too.
there should be a way for server extensions to do what clients can.
(I know thats not what you were suggesting here, but it might make
implementing such things easier)


I didn't want to divert the original thread before it even starts, but
was curious - what do you mean by this? I don't see how XMPP can
enforce Google to implement any extension. The issue here is that the
predominant use case for decloaking is Jingle, and many Jingle users
happen to be Google Talk users.

If decloaking was done client-side then the user can simply switch to
a better client that supports it, switching server is much harder
work.

I guess I just don't understand your there should be a way for server
extensions to do what clients can.


Back before we even developed Jingle, I had some similar thoughts. It
would be great if I could ask my server to call you (like a switchboard
operator in the olden days), but realistically sometimes the client does
know best (it's behind a firewall, it has certain network interfaces, it
has certain capabilities, etc.). I do think it's worth exploring how
much servers can do, because in many ways we've gotten away from the
philosophy of simple clients, complex servers. Is that philosophy
really valid and sustainable? Should servers really do more, or should
they be XML routers in the middle? Should the network be smart or dumb?
These are large design questions and I don't think they have easy answers.

Peter



Re: [Standards] XEP-0235: OAuth Over XMPP is not enough.

2009-12-03 Thread Jason Eacott
So heres a simple usecase. Lets say I want to create a simple web 
interface to an existing xmpp service, and I'd like users to be able to 
be represented on the xmpp network with their own existing accounts if 
they have one. The service should also be able to subscribe my user to 
pubsub nodes, and otherwise use it as widely as some authorisation rules 
allow. the only way I can do this right now is if I can convince users 
to give my service their jid  password. Even if the service itself 
supports oauth/facebookid/openid etc it still couldn't access private 
xml storage, or modify my account settings etc.


What I'm suggesting is that perhaps it should not be the requirement of 
each service to directly support this, but that a pluggable, extensible 
system exist that the xmpp servers themselves support that can be 
transparently leveraged by these services. With oauth in particular, 
services and users privacy is reasonably maintained, without something 
like this there is the possibility that service (A) can become aware 
that user (A) is also subscribed to services (B) and (C). great care 
would need to be taken in defining a solution.


Cheers



Peter Saint-Andre wrote:

On 11/26/09 8:34 PM, Jason Eacott wrote:

Hi all,
  I'd really like to see a much tighter integration of XMPP and Oauth.
Oauth is a protocol which should allow an entity to act on behalf of
another. In XMPP terms I believe this should mean that a user/jid should
be able to allow any XMPP service(bot, component, user) to become its
proxy for any specified services. The authorised proxy services should
be able to effectively spoof the users identity.

This is not how the existing xmpp oauth XEP works, and in my opinion the
current XEP is a poor solution. In the HTTP world almost every
website(service) requires its own user/identity login, so requiring each
service to maintain its own Oauth consumer token lists and oauth
implementations is entirely reasonable since those services already
manage their own users.

In the XMPP world most people have a single JID, which is their global
account for accessing every service. I believe XMPP must address Oauth
at this level.

This would enable xmpp services to send messages on behalf of any user
without requiring user/pass credentials (the services would of course
have access to oauth access tokens  secrets), without requiring a
component be deployed on the same xmpp domain as the user, and without
requiring an explicit xmpp connection be established for the proxied user.
This would also allow xmpp components to make use of ANY existing XMPP
service or XEP, enabling real service reuse by other services, without
the requirement to reinvent those services (something that seems to
happen a lot in the xmpp world). For example, and imaginary serviceA
that needs to use XEP-0049: Private XML Storage, and XEP-0016:
Privacy Lists to fulfil its service requirements. Currently serviceA
would either be impossible or extremely complex to implement.

I could also greatly reduce the resources required by servers running
such services since full user connections would not need to be
established in order to send messages on 3rd parties behalf (where the
3rd parties jid is not on the same xmpp domain as the service). simply
signing the message and sending it from any jid or component would be
enough.

For a service that wants multiple rights from a user, it should be able
to ask the user and require a single response (ie the user that is
assigning multiple rights should be able to assess the requirements and
respond with a single response, not visit 10 different service providers
to individually authorise them).

The results of all this I think mean a new standard is required for the
auth management, and new rules required for what a server recognises as
the from address.

I hope this is vaguely readable,
Thoughts anyone?


It sounds dreamy, although I'm not clear on the use cases here and why
they are so compelling. I also don't like the part about new rules for
from addresses, because I don't think that's necessary with OAuth.

Also, note that OAuth is in a bit of flux right now. Once the OAuth WG
at the IETF produces OAuth 1.1 or OAuth 2.0, I think we'll have a
clearer vision of where XMPP fits in the picture. Feel free to join that
mailing list (quite active of late) to make sure that OAuth is flexible
enough to handle non-HTTP scenarios. I'll do my best to make sure that
happens, too (I'm co-chair of the WG, after all ;-).

Peter



[Standards] XEP-0235: OAuth Over XMPP is not enough.

2009-11-26 Thread Jason Eacott

Hi all,
  I'd really like to see a much tighter integration of XMPP and Oauth.
Oauth is a protocol which should allow an entity to act on behalf of 
another. In XMPP terms I believe this should mean that a user/jid should 
be able to allow any XMPP service(bot, component, user) to become its 
proxy for any specified services. The authorised proxy services should 
be able to effectively spoof the users identity.


This is not how the existing xmpp oauth XEP works, and in my opinion the 
current XEP is a poor solution. In the HTTP world almost every 
website(service) requires its own user/identity login, so requiring each 
service to maintain its own Oauth consumer token lists and oauth 
implementations is entirely reasonable since those services already 
manage their own users.


In the XMPP world most people have a single JID, which is their global 
account for accessing every service. I believe XMPP must address Oauth 
at this level.


This would enable xmpp services to send messages on behalf of any user 
without requiring user/pass credentials (the services would of course 
have access to oauth access tokens  secrets), without requiring a 
component be deployed on the same xmpp domain as the user, and without 
requiring an explicit xmpp connection be established for the proxied user.
This would also allow xmpp components to make use of ANY existing XMPP 
service or XEP, enabling real service reuse by other services, without 
the requirement to reinvent those services (something that seems to 
happen a lot in the xmpp world). For example, and imaginary serviceA 
that needs to use XEP-0049: Private XML Storage, and XEP-0016: 
Privacy Lists to fulfil its service requirements. Currently serviceA 
would either be impossible or extremely complex to implement.


I could also greatly reduce the resources required by servers running 
such services since full user connections would not need to be 
established in order to send messages on 3rd parties behalf (where the 
3rd parties jid is not on the same xmpp domain as the service). simply 
signing the message and sending it from any jid or component would be 
enough.


For a service that wants multiple rights from a user, it should be able 
to ask the user and require a single response (ie the user that is 
assigning multiple rights should be able to assess the requirements and 
respond with a single response, not visit 10 different service providers 
to individually authorise them).


The results of all this I think mean a new standard is required for the 
auth management, and new rules required for what a server recognises as 
the from address.


I hope this is vaguely readable,
Thoughts anyone?

Thanks
Jason.




Re: [Standards] UPDATED: XEP-0253 (PubSub Chaining) (XMPP Extensions Editor)

2009-11-19 Thread Jason
I still think a small modification to XEP-0248: PubSub Collection Nodes 
to allow remote node association would make XEP-0253 totally redundant 
and simplify things a lot.


just my 2 yen.



Date: Wed, 18 Nov 2009 12:53:15 -0600
From: XMPP Extensions Editor edi...@xmpp.org
Subject: [Standards] UPDATED: XEP-0253 (PubSub Chaining)
To: standards@xmpp.org
Message-ID: e1napev-0003y5...@athena.jabber.org

Version 0.2 of XEP-0253 (PubSub Chaining) has been released.

Abstract: This specification defines a method for chaining pubsub nodes 
together, resulting in lightweight repeaters for pubsub notifications.

Changelog: Specifed protocol flow for the chained subscription. (psa)

Diff: not available

URL: http://xmpp.org/extensions/xep-0253.html


[Standards] oauth and xmpp server responsibility

2009-11-02 Thread Jason

Hi all,
   I've returned to this because my usecase seems to warrant some 
ownership by the server.


in my setup I have an xmpp component acting as my server application.
each server maintains data for the users on that server.
but 'users' never log in directly to these servers, but always via some 
3rd party application which connects as a simple xmpp client and makes 
oauth requests on behalf of users.
so user-http etc-3rdpartyapp-xmpp client-somexmppserver-needs to 
route the message to the appropriate server based on the oauth user.


since the users all have real xmpp addresses, it seems it could be a 
reasonable to have the xmpp server itself accept the oauth request 
(instead of my server component) and vet it against data that could be 
stored in users private storage (or a new xep just for auth keys  
permission option storage and matching).
If this were in place then any individual (or app with suitable oauth 
permission) could save tokens  permission data to a users private 
storage. Then an app with granted authority could send an oauth message, 
which would be vetted and forwarded to the users own xmpp server for 
processing (or sending again if its a message to elsewhere I guess).
The forwarded message should have a new xml fragment included to 
indicate the original sender, and the various tokens that were included.


of course this is all doable with custom components for everything, but 
why not allow developers to actually use all of the existing xmpp 
infrastructure and any custom apps, via oauth without having to reinvent 
everything.


One last thing. the existing oauth spec doesnt support the idea that a 
message may need to carry nested authorities (or messages with 
authorities).
If I have a proxy setup something like user-serverapp1-mule 
ESB-serverapp2
where muleESB is acting as a proxy for messages from app1 to app2, but 
it has its own xmpp identity Then to avoid mule needing to check 
authorities itself, 'app1 oauth user' needs to be wrapped by mule and a 
new auth added for 'mule oauth app1'. I dont know how this should best 
be done. If the existing oauth xml spec allowed for arbitrary stanza 
subelements then a sensible nesting of messages could be sent and 
processed without the need to change architectures or create other 
custom message formats  workarounds.


Thoughts?
thanks
Jason.








Re: [Standards] xmpp oauth query

2009-10-17 Thread Jason

Thanks, it does clarify things a lot,
   but it means that each and every client/component must provide its 
own implementation for this, so it seems a real disincentive.
I'm trying to accomplish the usual oauth usecase, ie give an entity 
permission to act on behalf of another for a range of services. I want 
my cake and eat it too :)
 I want to make use of all the existing xmpp infrastructure for user 
management, authorisation, roster management, pubsub etc, but I want to 
allow 3rd party entities access to some of this functionality. It seems 
such a waste to have to reimplement this stuff over and over. my actual 
'users' will never log in directly to xmpp, they will always be 
'proxied' via 3rd party services (the user implementations using actual 
xmpp accounts being a convenience for me).
I am using xmpp principally as a transport, but I'm also trying to use 
it to naturally federate my app (although I'm not sure its really going 
to work), and to save me some work re user account management and pubsub 
services. it also provides me with a platform/language independent 2 way 
transport - there really arent many choices here - which I can use 
internally and externally.
oauth lets 1 entity act on behalf of others for given services so it 
seemed a good fit.
so my initial thought re oauth was that there should be a way to hook 
into an xmpp server provided service to appropriately process the 
stanza, but no such thing exists and I'm not sure it can?. My second 
thought was to create a component that would simply process the oauth 
request and forward the request as the new user (adding a short custom 
element describing the origin user) since this would work for all cases, 
would be easier to implement for all my services, and would work for all 
the existing xmpp provided services too. It would also allow any service 
to act on any others behalf I'm not sure components are actually allowed 
to do this though(?), because it seems as if they were then it would be 
easy to write xmpp spam bots.
Also there are problems with this scheme allowing oauth proxies access 
to services they were never authorised for (ie endpoint services that 
didnt check the origin and user prefs/granted access would blindly 
accept the request).

I hope this makes sense, what am I missing?

Thanks
Jason.







On 10/13/09 9:05 PM, Jason Eacott wrote:

Hi All,


Howdy. :)


   I've been trying to understand oauth for xmpp and have a couple of
questions, I hope someone can answer :)

I'm a bit confused as to what exactly the producer consists of.
For example, should an xmpp server accept the oauth stanza and
subsequently forward the given request as the oauth alias?
   clear as mud I know, but I'm asking if I send a message containing
the details:
from=somejidA
to=somejidB
oauth alias=somejidC

then should/could an xmpp server rewrite this as simply:
from=somejidC
to=somejidB

if this isnt the way its supposed to work, then is it up to each
component/client to implement its own oauth impl for every incoming stanza?
sorry if the question seems dumb but I'm still unclear on how to code a
component that reacts to a given subelement (ie oauth)
and apply its outcome to the wrapping element.

I hope someone can make my head less murky ;-)


Hmm. :)

First, what exactly are you trying to accomplish? Perhaps you could
describe your use case a bit more.

The idea behind XEP-0235 (OAuth Over XMPP) is that the XMPP server isn't
really involved, and certainly not involved in rewriting stanzas.
Instead, an XMPP client would provide an access token when seeking to do
something like publish to a pubsub node or join a chatroom. The client
would not obtain the access token over XMPP and similarly the request
token would not be obtained over XMPP. Right now all we have defined is
a way to include an access token with a particular XMPP request.

I hope that clarifies things a bit more.

Peter

- --
Peter Saint-Andre
https://stpeter.im/


[Standards] xmpp oauth query

2009-10-13 Thread Jason Eacott
Hi All,
   I've been trying to understand oauth for xmpp and have a couple of
questions, I hope someone can answer :)

I'm a bit confused as to what exactly the producer consists of.
For example, should an xmpp server accept the oauth stanza and subsequently
forward the given request as the oauth alias?
   clear as mud I know, but I'm asking if I send a message containing the
details:
from=somejidA
to=somejidB
oauth alias=somejidC

then should/could an xmpp server rewrite this as simply:
from=somejidC
to=somejidB

if this isnt the way its supposed to work, then is it up to each
component/client to implement its own oauth impl for every incoming stanza?
sorry if the question seems dumb but I'm still unclear on how to code a
component that reacts to a given subelement (ie oauth)
and apply its outcome to the wrapping element.

I hope someone can make my head less murky ;-)

thanks
Jason.


[Standards] help pubsub filter

2009-09-24 Thread Jason Eacott
hi All,
  I found this post
http://mail.jabber.org/pipermail/standards/2008-May/018810.html
and I need exactly this functionality. I'm wondering if anything like this
actually progressed, I haven't really found anything that seems quite right
in the XEPs
did I miss something?

Ideally I'd like to be able to do something like this:
create a pubsub node.
use something like stock market ticker stream as publisher input to the
node.
have each subscriber able to filter the notifications (at the/a server) by
arbitrary payload content - ie stockname=abc and price x

This is not my actual usecase, but its a perfect fit for what I need.

Thanks
Jason.


Re: [Standards] DEFERRED: XEP-0248 (PubSub Collection Nodes)

2009-09-12 Thread Jason

This saddens me too.
 I just assumed nobody was interested in my suggestion since I heard 
absolutely no feedback.


Jason.




Re: [Standards] Standards Digest, Vol 69, Issue 17

2009-08-27 Thread Jason

You should probably re-read the spec: all the fields are optional.  You
can also provide a time, a uri and you have text and description fields
at your disposition if the other ones are too restrictive.


true you can provide a time and a uri, but neither are documented with 
any intent to BE a location. They are strictly ancillary data. I guess 
they could be kludged to represent the wrong thing in a closed private 
system but that doesnt sound like a good idea.



I understand that this was strictly designed with Earth locations in
mind though. :)


indeed - this is also a problem. the spec should take into account non 
Earth based locations, as well as virtual locations (in virtual online 
worlds, and websites etc), or custom concepts of location. Basically 
anything modern English useage allows us to say we are somewhere - see u 
on myspace/facebook/someBarInSecondLife etc.


Cheers.




Pierre-Luc
-- next part --
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 197 bytes
Desc: This is a digitally signed message part
URL: 
http://mail.jabber.org/pipermail/standards/attachments/20090825/d2f18996/attachment-0001.pgp

--

Message: 3
Date: Wed, 26 Aug 2009 03:14:48 +0200
From: Florian Zeitz florian.ze...@gmx.de
Subject: Re: [Standards] Adding countrycode to XEP-0080: User Location
To: jeac...@hardlight.com.au, XMPP Standards standards@xmpp.org
Message-ID: 4a948c88.8030...@gmx.de
Content-Type: text/plain; charset=ISO-8859-1

-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

Jason wrote:

For my current useage this spec is too limiting to physical locations.
parts of related specs allow for location types that are not
representable by country/gps etc, things like URLs, or TIME. (you can
be conceptually @ a web location, time, or some other unknown, perhaps
virtual representation of location), it would be nice if this spec were
flexible enough to accomodate such notions.



Can you possibly explain in more detail what your current usage is?
I personally think there is merrit in having this namespace/XEP
specifically bound to physical location. For websites your currently
browsing there is User Browsing and there is also XEP 0202 for getting
an entities time (although I don't know how that fits in the context of
locations).




Re: [Standards] Adding countrycode to XEP-0080: User Location

2009-08-25 Thread Jason

For my current useage this spec is too limiting to physical locations.
parts of related specs allow for location types that are not 
representable by country/gps etc, things like URLs, or TIME. (you can 
be conceptually @ a web location, time, or some other unknown, perhaps 
virtual representation of location), it would be nice if this spec were 
flexible enough to accomodate such notions.





Re: [Standards] XEP-0248: PubSub,Collection Nodes

2009-08-04 Thread Jason Eacott
not really, but I have had a bit of a think about it.
Since the existing mechanism for adding/removing nodes is via forms, I
couldn't easily add a new field per submitted value without requiring
multiple form submissions.
(could possibly do it using the 'result' type and item tags but I
doubt it would work.
just highlights a small limitation of the forms capability. )

So I was thinking perhaps something like this (added a delimiter and a
formatted value entry for foreign/remote nodes.) :

from
6.3.1 Only One Collection Node
text-multi for the pubsub#collection field should probably be set to true.

8. Associate an Existing Node with a Collection
Example 18. Node owner modifies node configuration

iq type='set'
from='ham...@denmark.lit/elsinore'
to='pubsub.shakespeare.lit'
id='associate1'
  pubsub xmlns='http://jabber.org/protocol/pubsub#owner'
configure node='princely_musings'
  x xmlns='jabber:x:data' type='submit'
field var='FORM_TYPE' type='hidden'
  valuehttp://jabber.org/protocol/pubsub#node_config/value
/field
field var='pubsub#collection-delimiter'
  value#/value
/field
...
field var='pubsub#collection'valueblogs/value/field
field 
var='pubsub#collection'valuepubsub.denmark.lit#blogs/value/field
...
  /x
/configure
  /pubsub
/iq

same for node config
Example 19. Node owner modifies node configuration

iq type='set'
from='b...@shakespeare.lit/globe'
to='pubsub.shakespeare.lit'
id='associate2'
  pubsub xmlns='http://jabber.org/protocol/pubsub#owner'
configure node='blogs'
  x xmlns='jabber:x:data' type='submit'
field var='FORM_TYPE' type='hidden'
  valuehttp://jabber.org/protocol/pubsub#node_config/value
/field
...
field var='pubsub#collection-delimiter'
  value#/value
/field
...
field var='pubsub#collection'valueblogs/value/field

field var='pubsub#children'
  valueprincely_musings/value
  valuekingly_ravings/value
  valuepubsub.shakespear.lit#starcrossed_stories/value
  valuepubsub.denmark.lit#moorish_meanderings/value
/field
...
  /x
/configure
  /pubsub
/iq


I think this would be enough. no need to add and associate at the same
time for remote nodes, I think everything else is still ok.
All the existing messaging carries enough info for any endpoint to
target the originator if it needs to, please correct me if I'm wrong,
it's likely I've missed something important somewhere.

Other features that I think would be tremendously useful , would be
the ability for a node owner or (publisher?)
to set chainable group based, and content based filters on outgoing
data (is it already possible to filter incoming node data?). Its
possible for individual end users to set filters,
but if a node owner wants to restrict a certain group of node
subscribers from receiving notifications for certain types of data,
this would be handy.
The content based part could provide a nice way to provide
sanitisation/transformation of data en route (maybe a nice way to hook
into an esb etc from a node would be a good solution?).

thoughts?

Thanks
Jason.


.
I sincerely hope this group considers ammending this xep.

Cheers.

-
Jason, this sounds interesting to me as well. Do you have some amendment
text to propose?

Thanks


Re: [Standards] XEP-0248: PubSub,Collection Nodes

2009-07-31 Thread Jason

Ok,
  but a URI is implied when you create a node, so it exists in some 
form regardless. If you dont want to specify a URI per node, then what 
about adding a server attribute/element in the xml somewhere for the 
collection management requests instead? I think this is really important 
for xmpp and would provide real interoperability between services. Why 
shouldnt I be able to create a node somewhere that effectively 
aggregates any other nodes data and/or events? Limiting everything to 
one machine just seems weird in a distributed system. What options does 
it leave for scaling to millions of nodes?
I also think the its difficult for implementors argument is flawed 
since if the server implementors dont provide it, then the end users are 
forced to come up with their own workarounds, or worse choose another 
solution altogether. I would have thought raising pubsub events and 
listening to them either local or remote would be exactly what xmpp 
should be great at (users already subscribe and listen to the raised 
events, why not other nodes?), and should not represent a complicated 
implementation.
reflecting pubsub from remotes into your local service through some 
means sounds like a huge hack, would likely be slow, and is what I want 
to avoid.
I'm looking for an alternative to clustering service implementations in 
XMPP.


I sincerely hope this group considers ammending this xep.

Cheers.


Brian Cully wrote:

On Jul 29, 2009, at 18:58, Jason jeac...@hardlight.com.au wrote:


This is a repost, I'm still hoping for a response.

Re XEP-0248: PubSub Collection Nodes,
It appears that there is no support for pubsub collections to contain 
remote nodes. I would like to be able to create a pubsub collection on 
a server, and add nodes from other servers to it).


I'm wondering why this is?


Because collection nodes and child nodes do not use a URI as parameters. 
Instead they reference node names directly which are only unique to a 
given service.


The rationale is likely because of the difficulty for server 
implementors in dealing with nodes on non-local services. If you want 
this behavior you're probably better off reflecting pubsub from remotes 
into your local service through some means.


-bjc



[Standards] Can I create a collection node somewhere, and add nodes from elsewhere(remote) to it?

2009-07-29 Thread Jason Eacott
Hi All,

  I'm quite new to XMPP and have been trying to figure out how I can make
use of it with my current project.

Thus far I've been thwarted by almost everything I thought I could do with
XMPP :)

Mostly I've been trying to figure out how to scale up xmpp based
applications using the natural federation xmpp provides, but most of the
xeps and extensions seem to assume clustering will always work.

I thought I had found a nice solution for my project using XEP-0248: PubSub
Collection Nodes, but I was surprised to find that it does not appear to
support collections containing remote nodes. (just to be clear, I
want to create a collection somewhere, and add nodes from elsewhere to it).

I'm wondering why this is?

It seems exactly the kind of thing xmpp should do and it would seem to be a
reasonable way to scale out nodes.
It would also appear to make XEP-0253: PubSub Chaining completely redundant.

Have I missed something important?

Thanks, Jason.


[Standards] XEP-0248: PubSub,Collection Nodes

2009-07-29 Thread Jason

This is a repost, I'm still hoping for a response.

Re XEP-0248: PubSub Collection Nodes,
 It appears that there is no support for pubsub collections to contain 
remote nodes. I would like to be able to create a pubsub collection on a 
server, and add nodes from other servers to it).


I'm wondering why this is?

It seems exactly the kind of thing xmpp should do and it would seem to 
be a reasonable way to scale out nodes.

It would also appear to make XEP-0253: PubSub Chaining completely redundant.

Have I missed something important?
If this really is a missing feature can it be ammended?

Thanks, Jason.