# \[ANN\] Ruby OpenID library and OpenIDLoginGenerator

**URL:** <https://www.ruby-forum.com/t/ann-ruby-openid-library-and-openidlogingenerator/89666>\
**Category:** Rails\
**Created:** [January 5, 2006, 2:03am UTC](https://www.ruby-forum.com/t/ann-ruby-openid-library-and-openidlogingenerator/89666 "2006-01-05T02:03:38Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![eng](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/e/3ec8ea/32.png) [@eng](https://www.ruby-forum.com/u/eng)\
**Post date:** [January 5, 2006, 2:03am UTC](https://www.ruby-forum.com/t/ann-ruby-openid-library-and-openidlogingenerator/89666/1 "2006-01-05T02:03:38Z")

</div>

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.

Read more and download the library:  
[http://www.openidenabled.com/openid/libraries/ruby/](http://www.openidenabled.com/openid/libraries/ruby/)  
[http://raa.ruby-lang.org/project/openid/](http://raa.ruby-lang.org/project/openid/)

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.

Read more on OpenID:  
[http://www.openid.net/](http://www.openid.net/)  
[http://www.openidenabled.com/](http://www.openidenabled.com/)

> **[OpenID](https://en.wikipedia.org/wiki/OpenID)**
>
> OpenID is an open standard and decentralized authentication protocol promoted by the non-profit OpenID Foundation. It allows users to be authenticated by co-operating sites (known as relying parties, or RP) using a third-party identity provider (IDP) service, eliminating the need for webmasters to provide their own ad hoc login systems, and allowing users to log in to multiple unrelated websites without having to have a separate identity and password for each. Users create accounts by selectin

Thanks,

Brian E., Janrain Inc.  
[openidenabled.com](http://openidenabled.com)  
[brian.myopenid.com](http://brian.myopenid.com)

---

<div class="post-metadata">

**Author:** ![eng](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/e/3ec8ea/32.png) [@eng](https://www.ruby-forum.com/u/eng)\
**Post date:** [January 5, 2006, 4:37am UTC](https://www.ruby-forum.com/t/ann-ruby-openid-library-and-openidlogingenerator/89666/2 "2006-01-05T04:37:09Z")

</div>

OpenID is an exciting system. Glad that there is a implementation for  
ruby!

However i got to ask: Why did you choose to go with camelCase method  
names?  
That looks really alien in the ruby world i think…

On 1/4/06, Brian E. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> and all the OpenID specification does is provide a way to securely prove  
> Thanks,  
> removed\_email\_address@domain.invalid  
> [http://lists.rubyonrails.org/mailman/listinfo/rails](http://lists.rubyonrails.org/mailman/listinfo/rails)

–  
Tobi  
[http://jadedpixel.com](http://jadedpixel.com) - modern e-commerce software  
[http://typo.leetsoft.com](http://typo.leetsoft.com) - Open source weblog engine  
[http://blog.leetsoft.com](http://blog.leetsoft.com) - Technical weblog

---

<div class="post-metadata">

**Author:** ![eng](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/e/3ec8ea/32.png) [@eng](https://www.ruby-forum.com/u/eng)\
**Post date:** [January 5, 2006, 10:00pm UTC](https://www.ruby-forum.com/t/ann-ruby-openid-library-and-openidlogingenerator/89666/3 "2006-01-05T22:00:42Z")

</div>

Brian E. wrote:

> Read more and download the library:  
> [http://www.openidenabled.com/openid/libraries/ruby/](http://www.openidenabled.com/openid/libraries/ruby/)  
> [http://raa.ruby-lang.org/project/openid/](http://raa.ruby-lang.org/project/openid/)

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](http://foobar.com),  
what  
assurance do I have that I’m actually being authenticated by [foobar.com](http://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?

Thanks for code, keep up the good work.

– Steve

---

<div class="post-metadata">

**Author:** ![eng](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/e/3ec8ea/32.png) [@eng](https://www.ruby-forum.com/u/eng)\
**Post date:** [January 6, 2006, 12:18am UTC](https://www.ruby-forum.com/t/ann-ruby-openid-library-and-openidlogingenerator/89666/4 "2006-01-06T00:18:56Z")

</div>

Steve,

On 1/5/06, Steve S. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> 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](http://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:

[http://www.openid.net/specs.bml#mode-associate](http://www.openid.net/specs.bml#mode-associate)

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.
