Table of Contents
Web Logins after Persona
The following slides are available in this presentation:
Web Logins after Persona
How I solved logins on my small websites
Robert Kaiser,
"KaiRo" <kairo@kairo.at>
Mozilla Rep, Website developer & Project Manager
Mozilla Rep, Website developer & Project Manager
Slides: https://slides.kairo.at/fosdem2017/
- Created for Mozilla Developer Room at FOSDEM 2017 in Brussels.
- Written in HTML 5 with CSS 3 and JavaScript.
- Navigation via links on all slides, via access keys (e.g. "n"/Alt+Shift+N for "next") or back/forward arrow keys
- Contents
01-02/2017 Robert Kaiser.
What iswas Persona?

Login/Identity solution by Mozilla, 2011-2016
- Decentralized / Federated (with Fallback)
- Multiple identities
- Verified Email
- Potential for browser integration
- BrowserID protocol, easy to implement, server-side verification
- Permission-less
See blog post by François Marier (feeding.cloud.geek.nz)
Needs of a Small Website

- Easy to implement
- Trusted identification
- Avoid dealing with how to secure passwords
- No lock-in (identification via email?)
- Privacy (not telling every login attempt to a big company)
Local vs. External Login

- Local: Sounds easy to implement, complications in details
- Local: Can always be trusted
- Local: Need to secure passwords
- External: Potential for lock-in
- External: Potential privacy issues
- External: Implementation difficulty depends on API
External Alternatives

Mozilla PersonaFirefox Accounts- Facebook, Google, GitHub, ...
- Other OAuth2 providers
- OpenID Connect (OIDC) providers (based on OAuth2)
- Other/older providers/standards (OAuth1, ...)
- Intermediates, e.g. Auth0
Interlude: A Future Alternative

Portier is a new in-development alternative
- Email authentication
- Decentralized (fallback to passwordless email auth)
- Speaking OIDC to client and "Brokers"
- "Spiritual successor to Mozilla Persona"
- Still in development ("early beta"): portier.github.io
Self-Hosted "External"

- Full control over login stack
- Password security isolated from website code
- Management of multiple identities possible
- Privacy and trust are no issues
- When using standard API, possibility for being switched out later
- Still needing to secure properly
The PHP Authserver

- OAuth2 API (potential extension to OIDC later), using oauth2-server-php
- Password storage with password_hash (currently bcrypt) + nonce, auto-upgrade on login
- Relatively easy to install on "LAMP" (Linux with Apache + MySQL + PHP5/PHP7)
- Doctrine DBAL for DB abstraction, php-utility-classes for email and DOM document abstraction
- Skinnable to brand installation to fit operator
- My installation at auth.kairo.at scores A+ from Mozilla Observatory
Current Status
- Only Authorization Code flow supported right now, oauth2-server-php can do Client Credentials as well as OIDC, should not be too hard to add.
- Tested with Apache and MySQL for now, other web and DB servers should be possible easily.
- Rudimentary documentation exists in the main README.
- Languages supported are US English (default) and German, detected via Accept-Language sent by browser.
- Testing is done by running logins with KaiRo's websites (2 different client implementations).
- Special Thanks to Christoph Zauner for doing a review that didn't find any actual security issues (but some minor comments).
- Open Source at github.com/KaiRo-at/authserver, under MPL2 - released TODAY!
Help Needed

- Implementation of OIDC and perhaps Client Credentials flows.
- Setting up a test suite and infrastructure.
- Writing more complete documentation.
- More UI languages?
- More installations?
- Your ideas and pull requests!