99994796cd0c9ea8204429d5f117610801c8d07b
[local-openid.git] / README
blob99994796cd0c9ea8204429d5f117610801c8d07b
1 = local-openid: Single User, Ephemeral OpenID Provider
3 local-openid allows users with shell accounts on servers to authenticate
4 with OpenID consumers by editing a YAML file in their home directory
5 instead of authenticating through HTTP/HTTPS.
7 1. Encounter a login page that accepts OpenID (the consumer)
8 2. Login into your own server (if you're not already logged in)
9 3. Start the local-openid app on your server
10 4. Login using your OpenID (on the consumer)
11    - you should be redirected to your local-openid application
12 5. edit ~/.local-openid/config.yml on your server to approve the consumer
13 6. Reload the local-openid page your browser was on.
14    - you should be logged in to the OpenID consumer site
15    - If not, check the error log (usually stderr) of local-openid
16 8. Shut down the local-openid application.
18 == local-openid exists for the following reasons:
20 1. Passwords and password managers feel clumsy to me on web browsers.
21    On the other hand; using ssh, editing text files, and running servers
22    are second nature.  Clearly, local-openid is not for everyone.
23 2. Identity providers may not last.  Companies die and business plans
24    change.  I'd rather my online identity not be subject to those whims.
25 3. OpenID providers could be compromised without disclosure.  With
26    local-openid, I have server logs to know if somebody is even trying
27    something fishy with my identity.  The vector for compromising my
28    identity is greatly reduced because my local-openid instance has 99.999%
29    downtime.
31 == Install
33 The following command should install local-openid and all dependencies:
35   gem install local-openid
37 setup.rb is also provided for non-Rubygems users.
39 == Requirements
41 local-openid is a small Sinatra application.  It requires the Ruby
42 OpenID library (2.x), Sinatra (1.0), Rack and any Rack-enabled
43 server.  To be useful, it also depends on having a user account on a
44 machine with a publically-accessible IP and DNS name to use as your
45 OpenID identity.
47 == Running
49 "local-openid" should be installed in your $PATH by RubyGems or
50 setup.rb.  It is a Sinatra application and takes the usual
51 command-line arguments.  It binds on all addresses (0.0.0.0) and port
52 4567 by default, using the standard WEBrick web server.
54 You may specify a different port with the *-p* switch and address with
55 the *-o* switch.  The following command will start local-openid on port
56 3000 bound to localhost (useful if behind a reverse proxy like nginx).
58   local-openid -o 127.0.0.1 -p 3000
60 == Hacking
62 I don't have any plans for more development with local-openid.  It was
63 after all, just a weekend hack.  It does what I want it to and nothing
64 more.
66 You can use the {mailing list}[mailto:local.openid@librelist.com] to
67 share ideas, patches, pull requests with other users.  Remember, I
68 wrote local-openid because I find the web difficult to use.  So I'll
69 only accept communication about local-openid via email :)
71 Feel free to fork it and customize it to your needs.  Of course, drop me
72 a line if you fix any bugs or notice any security holes in it.
74 You can get the latest source via git from the following locations:
76   git://git.bogomips.org/local-openid.git
77   http://git.bogomips.org/local-openid.git
78   git://repo.or.cz/local-openid.git (mirror)
79   http://repo.or.cz/r/local-openid.git (mirror)
81 You may browse the code from the web and download the latest tarballs here:
83 * http://git.bogomips.org/cgit/local-openid.git
84 * http://repo.or.cz/w/local-openid.git (gitweb mirror)
86 == Disclaimer
88 There is NO WARRANTY whatsoever, implied or otherwise.  OpenID may not
89 be the best choice for dealing with security-sensitive data, and this
90 application is just a weekend hack with no real security auditing.  On
91 the other hand, it's quite hard for somebody to steal your OpenID
92 credentials when your provider implementation has 99.999% downtime :)
94 == Contact
96 * Original author: Eric Wong, normalperson@yhbt.net
97 * OpenID: http://e.yhbt.net/
98 * mailing list: local.openid@librelist.com