SlideShare a Scribd company logo
Binary Studio Academy 2013
Academy report.
Implement OAuth library.
C++ group
Toder S.
Raev A.
Long time ago, in a galaxy far, far away...
Our task was to create OAuth library.
It was supposed to implement client side functionality of
1.0 and 2.0 specifications.
OAuth is an open standard for authorization that provides
a method for clients to access server resources on behalf
of a resource owner.
How to share access with third party?
2. Credentials
(e.g. username/password)
3. Credentials
4. Protected data
Simplest way:
Though it isn't a safe way!
User
(resource owner)
Third party server
(client)
Resource server
1. Request credentials
Why isn't it safe?
●
No simple way to control, how credentials can be used.
●
No way to revoke credentials for specific server without
affecting other clients.
Primary issues:
A better way!
1. Get client-specific credentials
Client Resource server
2.1. Ask to confirm access
2.2 Confirm access
User
3. Access protected resources
This way user can see, what kind of access will client get, and
this access can be revoked any time without side effects.
Tools used:
●
C++ with C++11 features as programming language
●
GIT and GitHub to work on project together
●
SCons and GCC to build the library on both Windows and
Linux.
●
cURL and cURLpp to make requests over network
●
OpenSSL for cryptography algorithms
●
Doxygen to generate documentation
●
GTest for unit testing
Demo: Facebook Notifier
Let's count facebook private messages!
But we need a permission first...
Demo: Facebook Notifier
Embed Facebook dialog in application:
Demo: Facebook Notifier
Receive a notification every time we get a
new message in Facebook!
Results
We have created OAuth library, that supports both OAuth
1.0 and 2.0.
We also have working samples for both versions.
Library is available on GitHub under WTFPL license:
https://github.com/4d6178/academy-oauth

More Related Content

PPT
Grid security
PPTX
Apache Airavata Credential Store
PPTX
Secure Code Warrior - Insufficient data encoding
PPTX
Secure Code Warrior - XQuery injection
PPTX
Secure Code Warrior - Cookies and sessions
PPTX
Secure Code Warrior - NoSQL injection
PDF
Reema Agarwal , BCA Third Year
DOC
programming in C++ report
Grid security
Apache Airavata Credential Store
Secure Code Warrior - Insufficient data encoding
Secure Code Warrior - XQuery injection
Secure Code Warrior - Cookies and sessions
Secure Code Warrior - NoSQL injection
Reema Agarwal , BCA Third Year
programming in C++ report

Similar to Binary studio academy 2013 c++ group (andrey and max) (20)

PDF
Introduction to OAuth2.0
PDF
A technical insight into the concepts and terminologies behind oauth – an ope...
PDF
Introduction to OAuth
PPTX
Oauth 2.0 Introduction and Flows with MuleSoft
PPTX
OAuth2 Implementation Presentation (Java)
PDF
Spring Security
PPTX
OAuth 2.0 - The fundamentals, the good , the bad, technical primer and commo...
PDF
Stateless Auth using OAuth2 & JWT
PDF
Demystifying OAuth 2.0
PDF
Oauth Behind The Scenes
PDF
Stateless Auth using OAUTH2 & JWT
PPTX
OAuth
PDF
Full stack security
PDF
CIS13: Bootcamp: Ping Identity OAuth and OpenID Connect In Action with PingFe...
PPTX
Oauth2 and OWSM OAuth2 support
PPTX
O auth2.0 20141003
PDF
OpenID and OAuth
PPTX
OAuth
PDF
When and Why Would I use Oauth2?
PPTX
Introduction to OAuth and how to create it by JoeSelian
Introduction to OAuth2.0
A technical insight into the concepts and terminologies behind oauth – an ope...
Introduction to OAuth
Oauth 2.0 Introduction and Flows with MuleSoft
OAuth2 Implementation Presentation (Java)
Spring Security
OAuth 2.0 - The fundamentals, the good , the bad, technical primer and commo...
Stateless Auth using OAuth2 & JWT
Demystifying OAuth 2.0
Oauth Behind The Scenes
Stateless Auth using OAUTH2 & JWT
OAuth
Full stack security
CIS13: Bootcamp: Ping Identity OAuth and OpenID Connect In Action with PingFe...
Oauth2 and OWSM OAuth2 support
O auth2.0 20141003
OpenID and OAuth
OAuth
When and Why Would I use Oauth2?
Introduction to OAuth and how to create it by JoeSelian
Ad

More from Binary Studio (20)

PPTX
Academy PRO: D3, part 3
PPTX
Academy PRO: D3, part 1
PPTX
Academy PRO: Cryptography 3
PPTX
Academy PRO: Cryptography 1
PPTX
Academy PRO: Advanced React Ecosystem. MobX
PPTX
Academy PRO: Docker. Part 4
PPTX
Academy PRO: Docker. Part 2
PPTX
Academy PRO: Docker. Part 1
PPTX
Binary Studio Academy 2017: JS team project - Orderly
PPTX
Binary Studio Academy 2017: .NET team project - Unicorn
PPTX
Academy PRO: React native - miscellaneous
PPTX
Academy PRO: React native - publish
PPTX
Academy PRO: React native - navigation
PPTX
Academy PRO: React native - building first scenes
PPTX
Academy PRO: React Native - introduction
PPTX
Academy PRO: Push notifications. Denis Beketsky
PPTX
Academy PRO: Docker. Lecture 4
PPTX
Academy PRO: Docker. Lecture 3
PPTX
Academy PRO: Docker. Lecture 2
PPTX
Academy PRO: Docker. Lecture 1
Academy PRO: D3, part 3
Academy PRO: D3, part 1
Academy PRO: Cryptography 3
Academy PRO: Cryptography 1
Academy PRO: Advanced React Ecosystem. MobX
Academy PRO: Docker. Part 4
Academy PRO: Docker. Part 2
Academy PRO: Docker. Part 1
Binary Studio Academy 2017: JS team project - Orderly
Binary Studio Academy 2017: .NET team project - Unicorn
Academy PRO: React native - miscellaneous
Academy PRO: React native - publish
Academy PRO: React native - navigation
Academy PRO: React native - building first scenes
Academy PRO: React Native - introduction
Academy PRO: Push notifications. Denis Beketsky
Academy PRO: Docker. Lecture 4
Academy PRO: Docker. Lecture 3
Academy PRO: Docker. Lecture 2
Academy PRO: Docker. Lecture 1
Ad

Recently uploaded (20)

PDF
Heart disease approach using modified random forest and particle swarm optimi...
PDF
NewMind AI Weekly Chronicles - August'25-Week II
PDF
1 - Historical Antecedents, Social Consideration.pdf
PDF
WOOl fibre morphology and structure.pdf for textiles
PPTX
Digital-Transformation-Roadmap-for-Companies.pptx
PPTX
Programs and apps: productivity, graphics, security and other tools
PDF
Unlocking AI with Model Context Protocol (MCP)
PPTX
SOPHOS-XG Firewall Administrator PPT.pptx
PDF
A comparative study of natural language inference in Swahili using monolingua...
PDF
Microsoft Solutions Partner Drive Digital Transformation with D365.pdf
PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
PDF
Mushroom cultivation and it's methods.pdf
PPTX
Tartificialntelligence_presentation.pptx
PDF
From MVP to Full-Scale Product A Startup’s Software Journey.pdf
PDF
Web App vs Mobile App What Should You Build First.pdf
PDF
Getting Started with Data Integration: FME Form 101
PDF
Encapsulation theory and applications.pdf
PDF
Assigned Numbers - 2025 - Bluetooth® Document
PPTX
A Presentation on Touch Screen Technology
PPTX
TLE Review Electricity (Electricity).pptx
Heart disease approach using modified random forest and particle swarm optimi...
NewMind AI Weekly Chronicles - August'25-Week II
1 - Historical Antecedents, Social Consideration.pdf
WOOl fibre morphology and structure.pdf for textiles
Digital-Transformation-Roadmap-for-Companies.pptx
Programs and apps: productivity, graphics, security and other tools
Unlocking AI with Model Context Protocol (MCP)
SOPHOS-XG Firewall Administrator PPT.pptx
A comparative study of natural language inference in Swahili using monolingua...
Microsoft Solutions Partner Drive Digital Transformation with D365.pdf
Agricultural_Statistics_at_a_Glance_2022_0.pdf
Mushroom cultivation and it's methods.pdf
Tartificialntelligence_presentation.pptx
From MVP to Full-Scale Product A Startup’s Software Journey.pdf
Web App vs Mobile App What Should You Build First.pdf
Getting Started with Data Integration: FME Form 101
Encapsulation theory and applications.pdf
Assigned Numbers - 2025 - Bluetooth® Document
A Presentation on Touch Screen Technology
TLE Review Electricity (Electricity).pptx

Binary studio academy 2013 c++ group (andrey and max)

  • 1. Binary Studio Academy 2013 Academy report. Implement OAuth library. C++ group Toder S. Raev A.
  • 2. Long time ago, in a galaxy far, far away... Our task was to create OAuth library. It was supposed to implement client side functionality of 1.0 and 2.0 specifications. OAuth is an open standard for authorization that provides a method for clients to access server resources on behalf of a resource owner.
  • 3. How to share access with third party? 2. Credentials (e.g. username/password) 3. Credentials 4. Protected data Simplest way: Though it isn't a safe way! User (resource owner) Third party server (client) Resource server 1. Request credentials
  • 4. Why isn't it safe? ● No simple way to control, how credentials can be used. ● No way to revoke credentials for specific server without affecting other clients. Primary issues:
  • 5. A better way! 1. Get client-specific credentials Client Resource server 2.1. Ask to confirm access 2.2 Confirm access User 3. Access protected resources This way user can see, what kind of access will client get, and this access can be revoked any time without side effects.
  • 6. Tools used: ● C++ with C++11 features as programming language ● GIT and GitHub to work on project together ● SCons and GCC to build the library on both Windows and Linux. ● cURL and cURLpp to make requests over network ● OpenSSL for cryptography algorithms ● Doxygen to generate documentation ● GTest for unit testing
  • 7. Demo: Facebook Notifier Let's count facebook private messages! But we need a permission first...
  • 8. Demo: Facebook Notifier Embed Facebook dialog in application:
  • 9. Demo: Facebook Notifier Receive a notification every time we get a new message in Facebook!
  • 10. Results We have created OAuth library, that supports both OAuth 1.0 and 2.0. We also have working samples for both versions. Library is available on GitHub under WTFPL license: https://github.com/4d6178/academy-oauth