The current specification of BrowserID makes a big assumption on the
powers of the UA. It has to have an on-board html5 rendering and
javascript engine and do all interaction with IdPs and RPs by exposing
the
navigator.id API. I see the following major benefits of this approach:
1. every IdP can implement and host their own completely custom web
based login flow
2. there is a natural separation between the RP and the IdP by
enforcing existing browser origin policies
There are also a few downsides to this approach:
1. it places heavy requirements on the UA, since it has to run a
complete html5 rendering- and JS-engine so it can render the IdPs
authentication and provisioning pages
2. albeit flexible for the IdP in that a custom web flow can be
designed, a non-custom-webbased flow is impossible. For e-mail only
providers that offer traditional authentication via smtp and sasl, this
can be a bridge too far.
3. it's hard to come up with a mobile app sdk for iOS and Andriod
because of the switching to the browser to login and then back to the
app without interrupting the app UX. If a mobile app could use a simple
REST interface for authentication and provisioning instead of running
the js engine on IdPs pages, this would make building mobile apps with
browserid much simpler and possible on a short term.
I'm not sure a rather "fat" client with html5 rendering and javascript
execution power is really needed in order to realize the concepts behind
BrowserID. I'm wondering if we can make a much lighter agent, that lacks
support for modern html5 if we make some adjustments to the protocol.
This can even short circuit a lot of the problems and workarounds
currently needed to make html5 popups work across different devices,
browsers and platforms.
In other words, I'm not convinced that mixing a fully fledged browser in
the BrowserID protocol is a necessity.
I worked out a small idea I have about a more RESTful approach that
offers alternatives to the custom-webbased-only login flow IdPs are
currently bound to. Please shoot on it:
https://etherpad.mozilla.org/c742JNtM