Version 0.9.2 of the Ruby OpenID library has been released. This latest
release contains a port of the rails LoginGenerator
(OpenIDLoginGenerator)
that uses OpenID for authentication.
A bit about OpenID:
OpenID is a URL based identity system. An OpenID identity is simply a
URL,
and all the OpenID specification does is provide a way to securely prove
that you own that URL. This sytem opens the door for all kinds of cool
things like single-sign-on and cross-site identity usage and
verification.
The Ruby library exposes an simple interface for verifying OpenID
identities.
That’s very cool, and similar to a single-sign-on schema I was
contemplating.
This might just let me do away with user authentication all together,
or at
least move it to my own identity server. Anybody work on a Rails
identity
server?
Before I take the plunge, though, I’m wondering how useful OpenID would
be for
preventing phishing attacks. I know that the point is to identify the
end
user to a third-party website, but what provision does the protocol
offer to
the identity server for verifying that the website is who it claims to
be (or,
at least, who it claimed to be when you first logged in to it).
In other words, if I tell my identity server to always trust foobar.com,
what
assurance do I have that I’m actually being authenticated by foobar.com?
Are
there persistent shared secrets between the website and the identity
server?
And, as a website operator, what happens if those secrets are lost?
That’s very cool, and similar to a single-sign-on schema I was
contemplating.
This might just let me do away with user authentication all together,
or at
least move it to my own identity server. Anybody work on a Rails identity
server?
A server library is in the works, but won’t be available for some time.
I’ll ping the list when it’s ready.
Before I take the plunge, though, I’m wondering how useful OpenID would
be
assurance do I have that I’m actually being authenticated by foobar.com
? Are
there persistent shared secrets between the website and the identity
server?
And, as a website operator, what happens if those secrets are lost?
Persistent shared secrets are stored on the site “consuming” the
identities. If for some reason the shared secret is lost, a new shared
secret must be created. This exchange is part of the OpenID protocol
and
covered in the “associate” step:
The OpenID library will automatically use an existing association with a
server if it exists, otherwise it will perform the associate step and
store
the secret for future requests.
Hope this helps,
Brian E.
This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.