57°F

Aaron Parecki

  • Articles
  • Notes
  • Photos

#indieauth

  • OAuth for the Open Web

    OAuth has become the de facto standard for authorization and authentication on the web. Nearly every company with an API used by third party developers has implemented OAuth to enable people to build apps on top of it.
    continue reading...
    Sat, Jul 7, 2018 9:30am -07:00 #indieauth #oauth #oauth2 #indieweb
  • 00dani https://github.com/00dani   •   Jun 26

    An alternative possibility would be to prescribe the format of IndieAuth access codes, as part of the standard. For instance, we could prefix the usual arbitrary implementation-specific access code blob with the expected me value, making it easy for token endpoints to discover the correct authorization endpoint. code=https://00dani.me/$C5r1cuqJk1fUTGrWX4DPHz44jxpgHF or something like that. Then, of course, pure OAuth 2.0 clients would pass through that extra piece of information with no trouble whatsoever, since it's embedded in an existing standard parameter.

    It's certainly a messy approach, though, and one might question whether OAuth client compatibility is worth adding this complexity to IndieAuth. Additionally, making a change like this now would introduce potential incompatibility: a token endpoint that knows it can pull information out of the access code might still receive an access code from an authorization endpoint that doesn't embed information in the prescribed format, for instance.

    Still, prescribing a format for access codes might not be quite as unreasonable as it seems: after all, client IDs are also treated as opaque in pure OAuth 2.0, whereas in IndieAuth they have a prescribed and meaningful format.

    Aaron Parecki

    tl;dr The more I think about it, the more I think this parameter enables a use case that isn't really necessary. The me parameter in the code exchange step specifically allows for a token endpoint to be detached from both the Micropub endpoint and the authorization endpoint.

    Full details below.

    The different use cases that are all supported right now:

    Integrated Micropub/Token/Authorization Endpoints

    This is the simplest case in terms of architecture, but the most amount of work for a developer. In this case, someone writes all three parts of the system. Since they are part of the same system, the mechanism by which the token endpoint validates authorization codes does not need to be standardized, it's all internal.

    Both my website and the Wordpress IndieAuth plugin fall under this case.

    Authorization Endpoint Service, Built-In Token and Micropub Endpoints

    In this case, someone is building a CMS that includes a Micropub endpoint as well as a token endpoint. However, they want to speed up their development, so they use an authorization endpoint service such as indieauth.com.

    The client sends the auth code to the token endpoint, and since the token endpoint is part of the CMS, it already knows the only place it can go to validate the auth code is the authorization endpoint service that it's configured to use. Therefore there is no need for the me parameter, which normally tells the token endpoint where to go to verify the auth code.

    Authorization Endpoint and Token Endpoint Service

    Specifically this case is where a service provides both an authorization endpoint and token endpoint. This is the quickest path to building a Micropub endpoint, since all you need to do is build out the Micropub endpoint itself, and when any requests come in with a token, the endpoint goes and checks whether the token is valid by testing it against the token endpoint service.

    This is a very common case with peoples' individual websites, as it offloads the development and maintenance of the security bits to a service. I provide these as a service at indieauth.com and tokens.indieauth.com.

    The interesting thing though is that when a single service provides both, there is also no need for the me parameter at the code exchange step, since the token endpoint already knows where it needs to verify the authorization code since the code was issued by the same system.

    Separate Authorization Endpoint and Token Endpoint Services

    The only case where the me is needed is when the authorization endpoint and token endpoint are both used as services and they are separate services. Imagine a standalone token endpoint service: the job of this service is to verify authorization codes and issue access tokens, and later verify access tokens. In this situation, a request comes in with an unknown authorization code and it needs to verify it. Since it was not part of the system that issued the code, it needs to know how to verify it. Right now, this is enabled because this request also includes the me parameter, so the token endpoint goes and looks up the user's authorization endpoint and verifies the code there.

    The thing I'm realizing though is that this is really quite an edge case, and one that I don't think is actually very important. Typically someone who is building a Micropub endpoint themselves will first start by using an authorization/token endpoint service, and there is no benefit to them if those are two separate services. In fact it's probably easier if they are just part of the same system since it's less moving parts to think about at this stage.

    Later, that person can decide they want to take over issuing tokens, but still don't want to build out the UI of an authorization service. At this point, they fall under the second use case above. They build out a token endpoint into their software, and since they're using the authorization endpoint service they know where to verify authorization codes.

    On the other end of the spectrum, you have people who build the whole thing out themselves, like my website and the Wordpress plugin. In these cases the me is completely irrelevant in the code exchange step.

    The particular situation that the me enables is using a separate service for the authorization and token endpoints, and I can't think of a case where that is actually important.

    Portland, Oregon, USA • 77°F
    2 likes 1 reply
    Thu, Jul 5, 2018 8:33pm -07:00 #indieauth
  • manton http://www.manton.org/author/manton

    IndieAuth for Micro.blog

    Portland, Oregon • 54°F
    permalink (liked on Mon, Jul 2, 2018 6:27am -07:00) #technology #indieauth #indiewebcamp #microblog
  • coolaj86 https://github.com/coolaj86   •   Apr 23

    #3837 Simpler UX for OAuth2 login with GitHub

    Aaron Parecki

    What we really need is federated authentication, but that doesn't exist yet.

    This sounds like a great use case for IndieAuth. w3.org/TR/indieauth

    IndieAuth is an OAuth 2.0 extension, which avoids the centralized problems with existing OAuth solutions by using DNS for "registration" of client IDs and user IDs. Every user account is identified by a URL (for Gitea this could be your Gitea user page), and client IDs are also URLs (would be the Gitea instance home page in this case.)

    To log in to your Gitea instance, I would enter my own Gitea profile URL. Your instance would then do discovery on my URL to find where to send me to authorize the login on my own OAuth server (my Gitea server), which would then send me back to your Gitea where it would be able to verify the authorization code against my Gitea instance.

    I'd be happy to walk through this in more detail if you're interested!

    Portland, Oregon, USA • 53°F
    1 reply
    Mon, Jun 4, 2018 6:43am -07:00 #indieauth
  • Aaron Parecki
    Just finished beta support for email and PGP auth on https://indielogin.com! Please give it a try and let me know if you find any bugs! Here are the setup docs: https://indielogin.com/setup

    This means it's now feature complete with https://indieauth.com, so I can now start switching over my apps to use it. With any luck I'll be able to switch the https://indieweb.org wiki to it before IndieWeb Summit!
    Portland, Oregon, USA • 76°F
    Sat, Jun 2, 2018 8:19pm -07:00 #indielogin #indieauth #indieweb
  • Dropping Twitter Support on IndieAuth.com

    I've made the difficult decision to drop support for Twitter authentication on IndieAuth.com. Some time last week, Twitter rolled out a change to the website which broke how IndieAuth.com verifies that a website and Twitter account belong to the same person.
    continue reading...
    2 likes 3 replies 3 mentions
    Sun, May 27, 2018 5:01pm -07:00 #indieauth #indielogin #twitter
  • Tantek Çelik http://tantek.com/
    hosting Homebrew Website Club SF tonight @MozSF!
    RSVP http://tantek.com/2018/080/e1

    Special guest @aaronpk will demo his #IndieWeb reader setup!
    https://aaronparecki.com/2018/03/12/17/building-an-indieweb-reader built on #openweb standards #WebSub #Microsub #microformats2 #IndieAuth #MicroPub #Webmention #Webhooks
    San Francisco, California • 64°F
    Wed, Mar 21, 2018 11:24am -07:00 (liked on Wed, Mar 21, 2018 6:59pm -07:00) #IndieWeb #openweb #WebSub #Microsub #microformats2 #IndieAuth #MicroPub #Webmention #Webhooks
  • Marty McGuire https://martymcgui.re/

    Micropub for a static Neocities website

    Portland, Oregon • 60°F
    Mon, Mar 12, 2018 1:04pm -04:00 (liked on Mon, Mar 12, 2018 10:33am -07:00) #IndieWeb #ghostparty #glitch #neocities #micropub #IndieAuth
  • OpenID Connect Federation – notiz.Blog (notiz.blog)
    Wed, Feb 14, 2018 12:53pm -08:00 #openid #oauth #indieauth
  • IndieAuth-Client-PHP 0.3.1

    This release includes two new methods for quickly developing an IndieAuth client.
    continue reading...
    2 replies 1 mention
    Wed, Feb 7, 2018 11:30am -08:00 #indieauth #indieweb
  • WebSub and IndieAuth Published on w3.org!

    Today, we published the last of the two W3C specs I am editing! WebSub was published as a W3C Recommendation, and IndieAuth was published as a Working Group Note.
    continue reading...
    22 likes 23 reposts 1 bookmark 7 replies 5 mentions
    Tue, Jan 23, 2018 6:28pm -08:00 #websub #indieauth #w3c #standards
  • Zegnat https://github.com/Zegnat   •   Jan 3

    #12 Specify RelMeAuth as fallback.

    Aaron Parecki

    This spec intentionally doesn't specify how users authenticate themselves to their server, it only deals with how third-party clients can authenticate users where their domain name is their identity.

    The analogous version of this in RelMeAuth, with Google as an example, is such: as far as the RelMeAuth client is concerned, it sends the user over to Google, and expects Google to handle authenticating the user. This might involve entering their password, optionally followed by a 2fa mechanism like a Yubikey or TOTP code. That is all invisible to the site they're logging in to.

    Similarly, IndieAuth clients do not know how users authenticate to their own server, the client just expects to send them off to the authorization endpoint and get back a response later that can be verified.

    It is not a good idea for a spec to require any sort of authentication mechanism between the user and their own authorization server, which is something that the OAuth 2.0 spec has also made clear.

    Now, the rest of this conversation is essentially continuing the naming debate of indieauth.com vs IndieAuth the spec vs other options we've considered.

    I agree with many of @tantek's points, like

    ... should be it "just works" even if you only setup rel=me

    However, that is describing RelMeAuth, not this spec. And as @Zegnat pointed out, even just adding rel=me isn't necessarily going to guarantee that you can sign in to an arbitrary site that supports RelMeAuth, since you need to add a rel=me link to a service that the site you're signing in to supports, which requires that site to register an OAuth application and deal with that service's API.

    I'm in the middle of renaming indieauth.com, the goal is that the wiki will redirect users to indielogin.com to authenticate them using the existing mechanisms: RelMeAuth, email, PGP, and IndieAuth. Nowhere in that flow will users see the term "IndieAuth" unless they include a rel=authorization_endpoint link on their website to an IndieAuth server of their choosing.

    I definitely agree that signing in to the wiki needs to be as simple as possible. That's the reason I added so many OAuth providers as well as alternate methods to indieauth.com (soon indielogin.com) in the first place. We've even had some people who want to sign in to the wiki but don't have a Twitter or GitHub account and don't want one, which is why I added things like email and PGP authentication options, which were not described by RelMeAuth.

    This is all to say that it's not the goal of this spec to include RelMeAuth. This spec is intended to be just the URL-based extension to OAuth 2.0. If "IndieAuth" is not the right name for this spec, that's a different issue.

    San Jose, California, USA • 52°F
    Wed, Jan 3, 2018 9:16am -08:00 #indieauth
  • Announcing the IndieAuth Spec!

    It's been a long time coming, but I've finally published a proper IndieAuth spec!
    continue reading...
    2 likes 1 reply 3 mentions
    Tue, Dec 5, 2017 12:30pm -08:00 #indieweb #indiewebchallenge #indieauth #oauth2 #oauth
  • William Narmontas https://www.scalawilliam.com/   •   Jul 8
    Number of sign-ins per month since 2012. If that info is not available, then just monthly number of hits on the site until now would suffice
    Aaron Parecki
    @scalawilliam That'll work!
    Portland, Oregon, USA
    2 likes
    Fri, Jul 7, 2017 9:04pm -07:00 #indieauth
  • William Narmontas http://www.scalawilliam.com
    #IndieAuth is SO MUCH easier than OAuth! https://indieauth.com/developers
    No secret keys, etc, etc. Works against localhost!
    Portland, Oregon
    Sun, Jun 11, 2017 12:34am +00:00 (liked on Sat, Jun 10, 2017 8:43pm -07:00) #IndieAuth
  • Aaron Parecki
    Getting a head start on IndieWebCamp Nürnberg on the train with @sebsel, editing wiki pages about IndieAuth and indieauth.com
    Heigenbrücken, Bayern, DEU
    3 likes
    Wed, May 17, 2017 1:06pm +02:00 #indieauth #indiewebcamp
  • Greg McVerry http://jgregorymcverry.com/   •   Mar 23
    we were looking at indieauth to include in thimble but passportjs warns folks not to use: http://bit.ly/2ns1xSV still true? #indieweb
    Aaron Parecki
    @jgmac1106 I don't know the state of that plugin, but you could just do it manually: https://indieauth.com/developers or https://indieweb.org/indieauth-for-login
    Portland, Oregon, USA
    Thu, Mar 23, 2017 10:13am -07:00 #indieauth
  • Day 86: Updating IndieAuth Docs #100DaysOfIndieWeb

    Beginning a slow project of updating the docs about the IndieAuth spec, today I started by updating a few pages on the wiki. Right now, most of the docs about IndieAuth (the spec), and how to use it, live across a variety of pages on the wiki, grouped together at https://indieweb.org/Category:IndieAuth.
    continue reading...
    1 like 1 reply 2 mentions
    Thu, Mar 16, 2017 5:22pm -07:00 #100daysofindieweb #micropub #indieauth #oauth2
  • Day 81: Removing SMS and Clef from IndieAuth.com #100DaysOfIndieWeb

    Sadly, Clef is shutting down in a couple months. If you haven't heard of it, it was a clever way to use your email and a mobile app to sign in to websites. I had integrated Clef logins to indieauth.com as one way to authenticate your email address. Since they are shutting down in June, I am proactively removing it from the website right now.
    continue reading...
    2 mentions
    Sat, Mar 11, 2017 10:18pm -08:00 #100daysofindieweb #indieauth #sms #clef
  • Day 73: Updated Documentation for indieauth.com #100DaysOfIndieWeb

    Today I updated the documentation for indieauth.com to include a setup guide for using indieauth.com as your OpenID provider, and added more prominent links to the OpenID and PGP instructions in various places on the site.
    continue reading...
    2 mentions
    Fri, Mar 3, 2017 8:38pm -08:00 #100daysofindieweb #indieauth #openid
older

Hi, I'm Aaron Parecki, Director of Identity Standards at Okta, and co-founder of IndieWebCamp. I maintain oauth.net, write and consult about OAuth, and participate in the OAuth Working Group at the IETF. I also help people learn about video production and livestreaming. (detailed bio)

I've been tracking my location since 2008 and I wrote 100 songs in 100 days. I've spoken at conferences around the world about owning your data, OAuth, quantified self, and explained why R is a vowel. Read more.

  • Director of Identity Standards at Okta
  • IndieWebCamp Founder
  • OAuth WG Editor
  • OpenID Board Member

  • 🎥 YouTube Tutorials and Reviews
  • 🏠 We're building a triplex!
  • ⭐️ Life Stack
  • ⚙️ Home Automation
  • All
  • Articles
  • Bookmarks
  • Notes
  • Photos
  • Replies
  • Reviews
  • Trips
  • Videos
  • Contact
© 1999-2025 by Aaron Parecki. Powered by p3k. This site supports Webmention.
Except where otherwise noted, text content on this site is licensed under a Creative Commons Attribution 3.0 License.
IndieWebCamp Microformats Webmention W3C HTML5 Creative Commons
WeChat ID
aaronpk_tv