Hi Larry,
Thanks for posting this to the list. We have seen this problem in the past,
have tossed around ideas, but we have never come to an agreement for a
solution.
Webmaker and Popcorn, two projects from Mozilla Foundation, have run in to
this same problem. Their solution was to embed a common iframe, served
from a common host, to both sites. The iframe takes care of authentication
for both sites. A common iframe shared across sites is a heavyweight
solution, but it works.
9 or so months ago, I experimented with SSO as a full feature of Persona[1].
The experiment was to declare a new parameter, ssoDomains, when calling
navigator.id.get or navigator.id.request. ssoDomains was a list of domains
that, if the user is signed in to "this" site, is also signed into "those"
sites.
Again, this was quick experiment to see if it could be done. The API was
not well thought through, and the feature never went anywhere.
A user of the Wordpress Persona plugin ran into this problem last week [2].
I would like to revive this experiment if there is interest.
There seem to be two types of SSO:
* cross-domain (signing in to
a.com also signs you into
b.com)
* intra-domain/cross-subdomain SSO (signing into
a.com also signs you
into
news.a.com or signing into
news.a.com also signs you into
blog.a.com)
A major issue is how two domains (or subdomains) establish a relationship.
Thunder and I talked once of establishing a common "realm" that each party
subscribes to.
Think of a realm as an association of sites. A site declares which realm
it belongs to. A central authority for each realm publishes a list of sites
that it believes belong to it. This means that sites have to cooperate for
there to be a link between them and one sided relationships cannot be
created.
The idea is that RPs declare, in their call to navigator.id.get
or navigator.id.request, a realm to which they belong. The realm declaration
points to an https URL, the endpoint of that URL is a JSON document that
declares which RPs are part of the realm and their common TOS/PP agreements.
This type of solution fits well for cross-domain SSO but I wonder if for
intra-domain/cross-subdomain sso if there is a simpler solution.
Could all RPs on one domain (*.
a.com) declare a regular expression or a list
of subdomains the sign in is valid for?
For example:
subdomains: "*.
a.com"
or
subdomains: ["
login.a.com", "
blog.a.com", "
admin.a.com"]
What do others think?
Shane
==============
[1] -
https://github.com/shane-tomlinson/browserid/tree/sso
[2] -
https://github.com/shane-tomlinson/browserid-wordpress/issues/18#issuecomment-18898750
On 04/06/2013 14:23, Larry Salibra wrote:
> Hi all,
>
> I'm considering implementing persona in a refresh of our product and have
> run into a problem with subdomains and the audience parameter when
> verifying identity assertions.
>
> The current watch browserid spec doesn't allow sign on state to be
> maintained across subdomains - a common practice supported by wildcard
> cookies.
>
> A user already logged in to
example.com would prompted by the browser to
> select a new identity and log in again at
subdomain.example.com. Imagine
> if
news.google.com asked to you log on again right after you logged in to
>
google.com. Pretty horrible user experience.
>
> According to stomlinson on #identity, two possible far from ideal
> workarounds are:
>
> 1) use the navigator.id.get API or
> 2) embed an iframe in every page that is always from the same domain. The
> iframe then takes care of all authentication related activities.
>
> Are there any better solutions?
>
> Since most web apps use cookies to remember log in state, Should "audience"
> be more restrictive than domain attribute of cookies?
>
> Thanks,
> Larry Salibra
>
> --
> Founder, Pay4Bugs
>
http://www.pay4bugs.com
> Web:
http://www.larrysalibra.com
> Twitter:
http://twitter.com/larrysalibra
> _______________________________________________
> dev-identity mailing list
>
dev-id...@lists.mozilla.org
>
https://lists.mozilla.org/listinfo/dev-identity