SlideShare a Scribd company logo
Easy Testing on Ruby
                        OpenID Consumer
                          Implementations
                             by Roman Gonzalez.




Tuesday 24 March 2009
Presentation Highlights
                   • What is OpenID?
                   • URL’s as our identity credentials
                   • OpenID Terminology
                   • The OpenID authentication process
                        explained
                   • How to implement RP’s Ruby
Tuesday 24 March 2009
Presentation Highlights

                   • Testing OpenID RP’s
                   • Demo (Rails, Merb)
                   • Q&A’s


Tuesday 24 March 2009
What is OpenID?
                   • A protocol that promotes the use of a
                        single digital identity (Single Sign On)
                   • Decentralized
                   • Simple and light-weight (no high security
                        stuff)
                   • Built upon Web technologies (HTTP, DNS)

Tuesday 24 March 2009
URL’s are our
                               credentials

                   • Most of people already have an URL to
                        represent their identity (Facebook, Twitter)
                   • They are globally unique and ubiquitous


Tuesday 24 March 2009
OpenID Terminology

                   • Actors
                    • Identifier (URL of the user)
                    • User-Agent (normally a Web Browser)
                    • Relying Party (RP)
                    • OpenID Provider (OP)

Tuesday 24 March 2009
OpenID Terminology

                   • Direct Messages
                    • HTTP POST requests from RP’s to OP’s
                    • Used for interchange of public keys


Tuesday 24 March 2009
OpenID Terminology

                   • Indirect Messages
                    • HTTP Redirects from RP’s to OP’s and
                          back
                        • Used for the authentication process


Tuesday 24 March 2009
OpenID Authentication
                 Step 1. Discovery




Tuesday 24 March 2009
OpenID Authentication
                 Step 1. Discovery



                               HTTP GET




Tuesday 24 March 2009
OpenID Authentication
                 Step 1. Discovery




Tuesday 24 March 2009
OpenID Authentication
                 Step 1. Discovery




Tuesday 24 March 2009
OpenID Authentication
                 Step 1. Discovery




Tuesday 24 March 2009
OpenID Authentication
                 Step 2. Association




Tuesday 24 March 2009
OpenID Authentication
                 Step 2. Association



                                HTTP POST




                          Exchange of public keys


Tuesday 24 March 2009
OpenID Authentication
                 Step 3. Give credentials to OP




Tuesday 24 March 2009
OpenID Authentication
                 Step 4. Choose which info to give to the RP




Tuesday 24 March 2009
OpenID Authentication
                 Step 5. You are _authenticated_




Tuesday 24 March 2009
Implementing OpenID
                         RP’s in Ruby
                   • Ruby On Rails: open_id_authentication by
                        rails at http://github.com
                   • Merb: hassox’s merb-auth gem, using the
                        OpenID strategy
                   • Rack: Using the auth/openid Rack app
                        included in the gem



Tuesday 24 March 2009
Testing OpenID RP’s
                   • How do we make test on it?
                        •   First naive approach: mocking/stubbing the ruby-
                            openid gem

                   • Why it is so hard to test?
                        •   Multiple types of communication between the
                            RP and the OP

                        •   The existing OP’s need human interaction



Tuesday 24 March 2009
Introducing ROTS
                                (Ruby OpenID Test Server)




                   • It provides an “easy” interface for
                        automated testing
                   • It uses an OP test servers (provided on the
                        gem) and a test API




Tuesday 24 March 2009
DEMO



Tuesday 24 March 2009
Final Thoughts


                   • ROTS is _not_ a silver bullet
                   • OpenID is not perfect, and it is not trying
                        to be




Tuesday 24 March 2009
Resources

                   • http://openidexplained.com
                   • http://github.com/rails/open_id_auth
                   • http://github.com/roman/rots
                   • http://test-id.net

Tuesday 24 March 2009
Q&A’s



Tuesday 24 March 2009
Thanks...
                             Contact Me
                        Follow: http://twitter/romanandreg
                        Read: http://blog.romanandreg.com



Tuesday 24 March 2009

More Related Content

Viewers also liked

Ma'rifah & taklid
Ma'rifah & taklidMa'rifah & taklid
Ma'rifah & taklidNur Hikmah
 
Introduction To Islam
Introduction To IslamIntroduction To Islam
Introduction To Islam
Amgad Helmy
 
Tools Of The Trade
Tools Of The TradeTools Of The Trade
Tools Of The Trade
Jeff Ray
 
Monica Tourino Ferreiros
Monica Tourino FerreirosMonica Tourino Ferreiros
Monica Tourino Ferreirosecursocig
 
Your Attitude Is Showing
Your Attitude Is ShowingYour Attitude Is Showing
Your Attitude Is Showing
ThinkLars
 
2b K Esahan Dan Kebolehpercayaaan Ringkas
2b K Esahan Dan Kebolehpercayaaan Ringkas2b K Esahan Dan Kebolehpercayaaan Ringkas
2b K Esahan Dan Kebolehpercayaaan RingkasNur Hikmah
 
Dynamic Communication
Dynamic CommunicationDynamic Communication
Dynamic Communication
ThinkLars
 
Chapter 5 — Notecards
Chapter 5 — NotecardsChapter 5 — Notecards
Chapter 5 — Notecards
pfoa54263
 

Viewers also liked (12)

Ma'rifah & taklid
Ma'rifah & taklidMa'rifah & taklid
Ma'rifah & taklid
 
fasakh
fasakhfasakh
fasakh
 
Introduction To Islam
Introduction To IslamIntroduction To Islam
Introduction To Islam
 
2 talak
2 talak2 talak
2 talak
 
8 Penilaian
8 Penilaian8 Penilaian
8 Penilaian
 
khuluk
khulukkhuluk
khuluk
 
Tools Of The Trade
Tools Of The TradeTools Of The Trade
Tools Of The Trade
 
Monica Tourino Ferreiros
Monica Tourino FerreirosMonica Tourino Ferreiros
Monica Tourino Ferreiros
 
Your Attitude Is Showing
Your Attitude Is ShowingYour Attitude Is Showing
Your Attitude Is Showing
 
2b K Esahan Dan Kebolehpercayaaan Ringkas
2b K Esahan Dan Kebolehpercayaaan Ringkas2b K Esahan Dan Kebolehpercayaaan Ringkas
2b K Esahan Dan Kebolehpercayaaan Ringkas
 
Dynamic Communication
Dynamic CommunicationDynamic Communication
Dynamic Communication
 
Chapter 5 — Notecards
Chapter 5 — NotecardsChapter 5 — Notecards
Chapter 5 — Notecards
 

Recently uploaded

Choosing The Best AWS Service For Your Website + API.pptx
Choosing The Best AWS Service For Your Website + API.pptxChoosing The Best AWS Service For Your Website + API.pptx
Choosing The Best AWS Service For Your Website + API.pptx
Brandon Minnick, MBA
 
Full-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalizationFull-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalization
Zilliz
 
HCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAUHCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAU
panagenda
 
Things to Consider When Choosing a Website Developer for your Website | FODUU
Things to Consider When Choosing a Website Developer for your Website | FODUUThings to Consider When Choosing a Website Developer for your Website | FODUU
Things to Consider When Choosing a Website Developer for your Website | FODUU
FODUU
 
Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
Octavian Nadolu
 
UI5 Controls simplified - UI5con2024 presentation
UI5 Controls simplified - UI5con2024 presentationUI5 Controls simplified - UI5con2024 presentation
UI5 Controls simplified - UI5con2024 presentation
Wouter Lemaire
 
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdfUni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems S.M.S.A.
 
Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024
Jason Packer
 
June Patch Tuesday
June Patch TuesdayJune Patch Tuesday
June Patch Tuesday
Ivanti
 
20240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 202420240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 2024
Matthew Sinclair
 
20240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 202420240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 2024
Matthew Sinclair
 
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdfUnlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Malak Abu Hammad
 
Serial Arm Control in Real Time Presentation
Serial Arm Control in Real Time PresentationSerial Arm Control in Real Time Presentation
Serial Arm Control in Real Time Presentation
tolgahangng
 
Generating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and MilvusGenerating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and Milvus
Zilliz
 
Taking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdfTaking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdf
ssuserfac0301
 
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Speck&Tech
 
Presentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of GermanyPresentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of Germany
innovationoecd
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
Safe Software
 
Monitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdfMonitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdf
Tosin Akinosho
 
Mind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AIMind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AI
Kumud Singh
 

Recently uploaded (20)

Choosing The Best AWS Service For Your Website + API.pptx
Choosing The Best AWS Service For Your Website + API.pptxChoosing The Best AWS Service For Your Website + API.pptx
Choosing The Best AWS Service For Your Website + API.pptx
 
Full-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalizationFull-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalization
 
HCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAUHCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAU
 
Things to Consider When Choosing a Website Developer for your Website | FODUU
Things to Consider When Choosing a Website Developer for your Website | FODUUThings to Consider When Choosing a Website Developer for your Website | FODUU
Things to Consider When Choosing a Website Developer for your Website | FODUU
 
Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
 
UI5 Controls simplified - UI5con2024 presentation
UI5 Controls simplified - UI5con2024 presentationUI5 Controls simplified - UI5con2024 presentation
UI5 Controls simplified - UI5con2024 presentation
 
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdfUni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdf
 
Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024
 
June Patch Tuesday
June Patch TuesdayJune Patch Tuesday
June Patch Tuesday
 
20240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 202420240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 2024
 
20240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 202420240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 2024
 
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdfUnlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
 
Serial Arm Control in Real Time Presentation
Serial Arm Control in Real Time PresentationSerial Arm Control in Real Time Presentation
Serial Arm Control in Real Time Presentation
 
Generating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and MilvusGenerating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and Milvus
 
Taking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdfTaking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdf
 
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
 
Presentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of GermanyPresentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of Germany
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
 
Monitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdfMonitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdf
 
Mind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AIMind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AI
 

Easy Testing On Ruby Openid Consumers

  • 1. Easy Testing on Ruby OpenID Consumer Implementations by Roman Gonzalez. Tuesday 24 March 2009
  • 2. Presentation Highlights • What is OpenID? • URL’s as our identity credentials • OpenID Terminology • The OpenID authentication process explained • How to implement RP’s Ruby Tuesday 24 March 2009
  • 3. Presentation Highlights • Testing OpenID RP’s • Demo (Rails, Merb) • Q&A’s Tuesday 24 March 2009
  • 4. What is OpenID? • A protocol that promotes the use of a single digital identity (Single Sign On) • Decentralized • Simple and light-weight (no high security stuff) • Built upon Web technologies (HTTP, DNS) Tuesday 24 March 2009
  • 5. URL’s are our credentials • Most of people already have an URL to represent their identity (Facebook, Twitter) • They are globally unique and ubiquitous Tuesday 24 March 2009
  • 6. OpenID Terminology • Actors • Identifier (URL of the user) • User-Agent (normally a Web Browser) • Relying Party (RP) • OpenID Provider (OP) Tuesday 24 March 2009
  • 7. OpenID Terminology • Direct Messages • HTTP POST requests from RP’s to OP’s • Used for interchange of public keys Tuesday 24 March 2009
  • 8. OpenID Terminology • Indirect Messages • HTTP Redirects from RP’s to OP’s and back • Used for the authentication process Tuesday 24 March 2009
  • 9. OpenID Authentication Step 1. Discovery Tuesday 24 March 2009
  • 10. OpenID Authentication Step 1. Discovery HTTP GET Tuesday 24 March 2009
  • 11. OpenID Authentication Step 1. Discovery Tuesday 24 March 2009
  • 12. OpenID Authentication Step 1. Discovery Tuesday 24 March 2009
  • 13. OpenID Authentication Step 1. Discovery Tuesday 24 March 2009
  • 14. OpenID Authentication Step 2. Association Tuesday 24 March 2009
  • 15. OpenID Authentication Step 2. Association HTTP POST Exchange of public keys Tuesday 24 March 2009
  • 16. OpenID Authentication Step 3. Give credentials to OP Tuesday 24 March 2009
  • 17. OpenID Authentication Step 4. Choose which info to give to the RP Tuesday 24 March 2009
  • 18. OpenID Authentication Step 5. You are _authenticated_ Tuesday 24 March 2009
  • 19. Implementing OpenID RP’s in Ruby • Ruby On Rails: open_id_authentication by rails at http://github.com • Merb: hassox’s merb-auth gem, using the OpenID strategy • Rack: Using the auth/openid Rack app included in the gem Tuesday 24 March 2009
  • 20. Testing OpenID RP’s • How do we make test on it? • First naive approach: mocking/stubbing the ruby- openid gem • Why it is so hard to test? • Multiple types of communication between the RP and the OP • The existing OP’s need human interaction Tuesday 24 March 2009
  • 21. Introducing ROTS (Ruby OpenID Test Server) • It provides an “easy” interface for automated testing • It uses an OP test servers (provided on the gem) and a test API Tuesday 24 March 2009
  • 23. Final Thoughts • ROTS is _not_ a silver bullet • OpenID is not perfect, and it is not trying to be Tuesday 24 March 2009
  • 24. Resources • http://openidexplained.com • http://github.com/rails/open_id_auth • http://github.com/roman/rots • http://test-id.net Tuesday 24 March 2009
  • 26. Thanks... Contact Me Follow: http://twitter/romanandreg Read: http://blog.romanandreg.com Tuesday 24 March 2009

Editor's Notes

  1. Good evening, my name is <name> and I will be presenting <title> First thing I want to point out that is that, I&#x2019;m not going to go to deep on the OpenID Theory, I will just tackle the surface of it, for all the people that is not familiar with it, get an idea of what this is all about.
  2. * Define OpenID * Explain why we use * Define the terms used in the OpenID protocol, <easier> * Tackle the whole OpenID authentication process * Show the best options for implementing RP&#x2019;s
  3. * How to manage the test process of our RP&#x2019;s implementations * I&#x2019;ll show you some code with Rails and Merb, and we are going to define a test
  4. * No forgetting passwords, manage your user information on one place * You don&#x2019;t have to make federations in order to make this work, the identities doesn&#x2019;t need to be in one OpenID Server * This protocol tries to be as simple as possible, ergo. it can be tackled because of this simplicity * It&#x2019;s proven to work because it&#x2019;s in top of the most popular Web technology
  5. * This makes it really easy for people to adapt to the concept of it * The same URL works, no matter where you are, and it can be found on the Web