SlideShare a Scribd company logo
Igor Bossenko
23.05.2014
SPA & REST security
Agenda
Authentication
How protect REST services
API-Key
Secret-key
Signature
Nonce, non-repuduation
OAuth1 vs OAuth2
Authorization
Profiles
Stateless vs stateful
HATEOAS
Atom/RSS
„Legacy“ solutions
HTTP Basic authentication
Username/password in URL
Google Translate example
Authentication with API Key
Simplest way for REST authentication
Used for public or open APIs
Twitter, Google Maps, New York Times, …
API key usually used for
Identify the caller
Check IP addresses of caller
To limit the number of requests
Authentication with API Key only is
unsecure
Public Google API
Public API is usually very atomic
New Google credential generation
Usually you must have separate API-Key for every API group
Authentication with secret key
API-key for identity
Secret-key (symmetric shared key) for
authentication
Authentication with additional secret
in header is not enough secure
(man-in-the-middle attacker risk)
Authentication with signature
API-key for identity
Secret-key for authentication, but secret key never sent with
request
Signature header is a HMAC-SHA256 hash of the nonce
concatenated with the full URL and body of the HTTP request,
encoded using your API secret-key.
Authentication with signature is secure.
Amazon solution
Request example
Signature calculation
Nonce
Nonce is an arbitrary (unique) number/string
Randon number
Number based on timestamp
Nonce included into signature
Requests with signature and nonce is very
secure and protect from replay attacks
Oauth (1.0)
In 2006 were no open standards for
API access delegation.
OAuth was designed to solve the
application-to-application security
problem.
OAuth Core 1.0 was released in 2007.
OAuth 1.0 concept
Terms
User, Consumer, Service Provider, Protected Resource, Provider
API
5 parameters to work with OAuth 1.0
Consumer key & Consumer secret
Request token URL
Authorize URL
Access token URL
OAuth 1.0 components
Token = Key + Secret
Message = Document + Digital Signature
Application = Consumer + Access to API
OAuth 1.0 Authentication Flow
OAuth 1.0 summary
OAuth 1.0
=
Fetch Request Token +
Redirect to Authorization +
Fetch Access Token +
Call API +
Signature calculated with secret-key
vs
OpenID - protocol for fast user
registration on the current website
(“protocol for users”)
OAuth - protocol for authorized access
to the third-party vendor API („protocol
for robots“ ).
Non-repudiation
Non-repuduation - method to ensure that a
transferred message has been sent and
received by the parties claiming to have sent
and received the message
Nonrepudiation can be obtained through the
use of:
Digital signatures
Confirmation services
Timestamp
OAuth 1.0 vs Estonian xRoad
xRoad OAuth
PKI public/private
certificates
string as secret key or
public/private certificates
Certificate storage Secure server Any verified certificate
storage, such as AD, ..
Organization RIA (Estonian
Information System
Authority)
Required
API Developed by RIA (in
estonian)
Required
Special software xRoad server No
Scope Estonian standard International standard
Protocol SOAP REST
OAuth 2.0
OAuth 2.0 focuses on client developer simplicity
while providing specific authorization flows for
web applications, desktop applications, mobile
phones, and living room devices.
OAuth 2.0 is more a framework than it is a
defined protocol.
OAuth 2.0 is not backwards compatible with
OAuth 1.0.
In July 2012, Eran Hammer resigned his role of lead author for the OAuth
2.0 project, withdrew from the IETF working group, and removed his
name from the specification. Hammer: „OAuth 2.0 is more complex, less
interoperable, less useful, more incomplete, and most importantly, less
secure."
List of OAuth service providers (May/2014)
Service provider
OAuth
protocol
Amazon 2.0
AOL 2.0
Basecamp 2.0
Bitbucket 1.0a
Dropbox 1.0, 2.0
Evernote 1
Facebook 2.0 draft 12
Flickr 1.0a
Foursquare 2
GitHub 2
Goodreads 1
Google 2
Google App Engine 1.0a
Instagram 2
Intel Cloud Services 2
LinkedIn 1.0a, 2.0
Microsoft (Hotmail, Windows Live, Messanger, Xbox) 2
Netflix 1.0a
PayPal 2
Twitter 1.0a, 2.0
Ubuntu One 1
Vimeo 1.0a
Yandex 2
OAuth 1.0 vs OAuth 2.0
Problems of OAuth 1.0
Authentication and Signatures on client side
User Experience and Alternative Token Issuance Options
Performance at Scale
OAuth 2.0 changes:
OAuth 2.0 relies completely on SSL for some degree of
confidentiality and server authentication.
Cryptography-free option for authentication which is based
on existing cookie authentication architecture.
Simplified signatures
Separation of Roles (SSO support)
Short-lived tokens with Long-lived authorizations
OAuth 2.0 flows
Web Server Flow – for clients that are part of a web server
application, accessible via HTTP requests. This is a simpler version
of the flow provided by OAuth 1.0.
User-Agent Flow – for clients running inside a user-agent (browser).
Device Flow – suitable for clients executing on limited devices, but
where the end-user has separate access to a browser on another
computer or device.
Username and Password Flow – used in cases where the user
trusts the client to handle its credentials.
Client Credentials Flow (JWT) – the client uses its credentials to
obtain an access token. This flow supports what is known as the 2-
legged scenario.
Assertion Flow – the client presents an assertion such as a SAML
assertion to the authorization server in exchange for an access
token.
OAuth2 Web Server Flow
OAuth2 Web Server Flow details
SSO
Particular case of Web Server Flow
when Client App and Resource Server
use the same Authorization Server
OAuth2 User Agent Flow
OAuth2 Resource Owner Password
Credentian Flow
OAuth2 Client Credential Flow
OAuth2 JSON Web Token (JWT) Flow
OAuth2 Revoke/Info request
OAuth2 Refresh Token
Does OAuth1 better than OAuth2?
Does OAuth1 better than OAuth2?
No, they have different purpose: OAuth1 for
server to server communication and OAuth2 for
user/device to server
Does OAuth1 more secure than
OAuth2?
Yes and No
OAuth 1.0 may be used without HTTPS
But, OAuth2 same secure as SSL
When to use OAuth1 & OAuth2?
OAuth 1.0 – server-to-server
OAuth 2.0 – browser/device/client-to-
server
I use OAuth. Does my app protected?
No
JSON may be changed before sending
Any URI may be called
OAuth just authentication for your app
and authorization to 3d-party apps
You may wants to do
Authorization and role/privilege check
Check of data consistency
State check or check of allowed actions
Authorization
You must check permissions every
time when REST service runs inside
service
You must also identify client and
context by cookie or by certificate
Data consistency
REST design
“Big” API vs “small” API
Profiles
Atom/RSS
“Big” API vs “small” API
1 REST service or 3 services?
Profiles
Тhe server checks the data sent
regarding the xsd or profile or...
Profile example
Servoice LivingSubject Profile „Ivoice 1" Profile „Invoice 2" Profile „Invoice 3"
Recipient/Person N/A M N/A
Recipient/Organization N/A N/A M
Owner/-organization N/A O M
Owner/Person N/A O O
Row/Article M M M
Row/Quantity N/A M M
Row/Sum N/A N/A O
Payment/Sum O O N/A
constraints Row.size()==1 Row.size()==1 Row.size()>0
State validation
Stateless
OAuth2 provides token expiration
You can store frequently used data in
HTTP Cookie
Local storage
Memory DB
Cache (like Ehcache)
Use HATEOAS (Hypermedia as the Engine of Application
State or hypermedia-driven system) for form validation
Stateful
You can use it too, but why?
HATEOAS
Data and links content separated one from another
Server may store allowed links and refuse all other
REST queries
A simple JSON presentation is traditionally rendered as:
{
"name" : "Alice"
}
A HATEOAS-based response would provide relevant links like this:
{
"name": "Alice",
"links": [ {
"rel": "self",
"href": "http://localhost:8080/customer/1"
} ]
}
HATEOAS and the PayPal REST Payment API
[
{
"href": "https://api.sandbox.paypal.com/v1/payments/payment/PAY-6RV70583SB702805EKEYSZ6Y",
"rel": "self",
"method": "GET"
},
{
"href": "https://www.sandbox.paypal.com/webscr?cmd=_express-checkout&token=EC-60U79048BN7719609",
"rel": "approval_url",
"method": "REDIRECT"
},
{
"href": "https://api.sandbox.paypal.com/v1/payments/payment/PAY-6RV70583SB702805EKEYSZ6Y/execute",
"rel": "execute",
"method": "POST"
}
]
https://developer.paypal.com/docs/integration/direct/paypal-
rest-payment-hateoas-links/
Use of OАuth
OAuth can be used as an authorizing
mechanism to consume secured
RSS/ATOM feeds
RSS/ATOM feeds
mechanism helps
to manage state
Thank you! Questions?

More Related Content

What's hot

Building Microservices with gRPC and NATS
Building Microservices with gRPC and NATSBuilding Microservices with gRPC and NATS
Building Microservices with gRPC and NATS
Shiju Varghese
 
gRPC Overview
gRPC OverviewgRPC Overview
gRPC Overview
Varun Talwar
 
API Security in a Microservice Architecture
API Security in a Microservice ArchitectureAPI Security in a Microservice Architecture
API Security in a Microservice Architecture
Matt McLarty
 
The Dual write problem
The Dual write problemThe Dual write problem
The Dual write problem
Jeppe Cramon
 
gRPC in Go
gRPC in GogRPC in Go
gRPC in Go
Almog Baku
 
Apache Kafka Architecture & Fundamentals Explained
Apache Kafka Architecture & Fundamentals ExplainedApache Kafka Architecture & Fundamentals Explained
Apache Kafka Architecture & Fundamentals Explained
confluent
 
gRPC Design and Implementation
gRPC Design and ImplementationgRPC Design and Implementation
gRPC Design and Implementation
Varun Talwar
 
Introduction to GraphQL
Introduction to GraphQLIntroduction to GraphQL
Introduction to GraphQL
Amazon Web Services
 
Securing Kafka with SPIFFE @ TransferWise
Securing Kafka with SPIFFE @ TransferWiseSecuring Kafka with SPIFFE @ TransferWise
Securing Kafka with SPIFFE @ TransferWise
👨‍💻 Levani Kokhreidze
 
What is gRPC introduction gRPC Explained
What is gRPC introduction gRPC ExplainedWhat is gRPC introduction gRPC Explained
What is gRPC introduction gRPC Explained
jeetendra mandal
 
Building microservices with grpc
Building microservices with grpcBuilding microservices with grpc
Building microservices with grpc
Sathiyaseelan Muthu kumar
 
Understanding REST APIs in 5 Simple Steps
Understanding REST APIs in 5 Simple StepsUnderstanding REST APIs in 5 Simple Steps
Understanding REST APIs in 5 Simple Steps
Tessa Mero
 
Implementing OAuth
Implementing OAuthImplementing OAuth
Implementing OAuth
leahculver
 
Understanding REST
Understanding RESTUnderstanding REST
Understanding REST
Nitin Pande
 
REST API Design
REST API DesignREST API Design
REST API Design
Devi Kiran G
 
Spring mvc
Spring mvcSpring mvc
Spring mvc
Pravin Pundge
 
Migrating Single-Tenant Applications to Multi-Tenant SaaS (ARC326-R1) - AWS r...
Migrating Single-Tenant Applications to Multi-Tenant SaaS (ARC326-R1) - AWS r...Migrating Single-Tenant Applications to Multi-Tenant SaaS (ARC326-R1) - AWS r...
Migrating Single-Tenant Applications to Multi-Tenant SaaS (ARC326-R1) - AWS r...
Amazon Web Services
 
Software architecture for high traffic website
Software architecture for high traffic websiteSoftware architecture for high traffic website
Software architecture for high traffic website
Tung Nguyen Thanh
 
Microservices & API Gateways
Microservices & API Gateways Microservices & API Gateways
Microservices & API Gateways
Kong Inc.
 
Data Loss and Duplication in Kafka
Data Loss and Duplication in KafkaData Loss and Duplication in Kafka
Data Loss and Duplication in KafkaJayesh Thakrar
 

What's hot (20)

Building Microservices with gRPC and NATS
Building Microservices with gRPC and NATSBuilding Microservices with gRPC and NATS
Building Microservices with gRPC and NATS
 
gRPC Overview
gRPC OverviewgRPC Overview
gRPC Overview
 
API Security in a Microservice Architecture
API Security in a Microservice ArchitectureAPI Security in a Microservice Architecture
API Security in a Microservice Architecture
 
The Dual write problem
The Dual write problemThe Dual write problem
The Dual write problem
 
gRPC in Go
gRPC in GogRPC in Go
gRPC in Go
 
Apache Kafka Architecture & Fundamentals Explained
Apache Kafka Architecture & Fundamentals ExplainedApache Kafka Architecture & Fundamentals Explained
Apache Kafka Architecture & Fundamentals Explained
 
gRPC Design and Implementation
gRPC Design and ImplementationgRPC Design and Implementation
gRPC Design and Implementation
 
Introduction to GraphQL
Introduction to GraphQLIntroduction to GraphQL
Introduction to GraphQL
 
Securing Kafka with SPIFFE @ TransferWise
Securing Kafka with SPIFFE @ TransferWiseSecuring Kafka with SPIFFE @ TransferWise
Securing Kafka with SPIFFE @ TransferWise
 
What is gRPC introduction gRPC Explained
What is gRPC introduction gRPC ExplainedWhat is gRPC introduction gRPC Explained
What is gRPC introduction gRPC Explained
 
Building microservices with grpc
Building microservices with grpcBuilding microservices with grpc
Building microservices with grpc
 
Understanding REST APIs in 5 Simple Steps
Understanding REST APIs in 5 Simple StepsUnderstanding REST APIs in 5 Simple Steps
Understanding REST APIs in 5 Simple Steps
 
Implementing OAuth
Implementing OAuthImplementing OAuth
Implementing OAuth
 
Understanding REST
Understanding RESTUnderstanding REST
Understanding REST
 
REST API Design
REST API DesignREST API Design
REST API Design
 
Spring mvc
Spring mvcSpring mvc
Spring mvc
 
Migrating Single-Tenant Applications to Multi-Tenant SaaS (ARC326-R1) - AWS r...
Migrating Single-Tenant Applications to Multi-Tenant SaaS (ARC326-R1) - AWS r...Migrating Single-Tenant Applications to Multi-Tenant SaaS (ARC326-R1) - AWS r...
Migrating Single-Tenant Applications to Multi-Tenant SaaS (ARC326-R1) - AWS r...
 
Software architecture for high traffic website
Software architecture for high traffic websiteSoftware architecture for high traffic website
Software architecture for high traffic website
 
Microservices & API Gateways
Microservices & API Gateways Microservices & API Gateways
Microservices & API Gateways
 
Data Loss and Duplication in Kafka
Data Loss and Duplication in KafkaData Loss and Duplication in Kafka
Data Loss and Duplication in Kafka
 

Similar to Single-Page-Application & REST security

Rest API Security - A quick understanding of Rest API Security
Rest API Security - A quick understanding of Rest API SecurityRest API Security - A quick understanding of Rest API Security
Rest API Security - A quick understanding of Rest API Security
Mohammed Fazuluddin
 
Securing RESTful API
Securing RESTful APISecuring RESTful API
Securing RESTful API
Muhammad Zbeedat
 
Demystifying SAML 2.0,Oauth 2.0, OpenID Connect
Demystifying SAML 2.0,Oauth 2.0, OpenID ConnectDemystifying SAML 2.0,Oauth 2.0, OpenID Connect
Demystifying SAML 2.0,Oauth 2.0, OpenID Connect
Vinay Manglani
 
O auth2 with angular js
O auth2 with angular jsO auth2 with angular js
O auth2 with angular js
Bixlabs
 
OAuth2 Introduction
OAuth2 IntroductionOAuth2 Introduction
OAuth2 Introduction
Arpit Suthar
 
Restful api
Restful apiRestful api
Restful api
Anurag Srivastava
 
OAuth 2.0 and OpenID Connect
OAuth 2.0 and OpenID ConnectOAuth 2.0 and OpenID Connect
OAuth 2.0 and OpenID Connect
Jacob Combs
 
OAuth - Don’t Throw the Baby Out with the Bathwater
OAuth - Don’t Throw the Baby Out with the Bathwater OAuth - Don’t Throw the Baby Out with the Bathwater
OAuth - Don’t Throw the Baby Out with the Bathwater Apigee | Google Cloud
 
REST API Authentication Methods.pdf
REST API Authentication Methods.pdfREST API Authentication Methods.pdf
REST API Authentication Methods.pdf
Rubersy Ramos García
 
Oauth2.0
Oauth2.0Oauth2.0
Oauth2.0
Yasmine Gaber
 
SAML VS OAuth 2.0 VS OpenID Connect
SAML VS OAuth 2.0 VS OpenID ConnectSAML VS OAuth 2.0 VS OpenID Connect
SAML VS OAuth 2.0 VS OpenID Connect
Ubisecure
 
Oauth2 and OWSM OAuth2 support
Oauth2 and OWSM OAuth2 supportOauth2 and OWSM OAuth2 support
Oauth2 and OWSM OAuth2 supportGaurav Sharma
 
UserCentric Identity based Service Invocation
UserCentric Identity based Service InvocationUserCentric Identity based Service Invocation
UserCentric Identity based Service Invocation
guestd5dde6
 
Protecting your APIs with OAuth 2.0
Protecting your APIs with OAuth 2.0Protecting your APIs with OAuth 2.0
Protecting your APIs with OAuth 2.0
Ubisecure
 
Api security
Api security Api security
Api security
teodorcotruta
 
OAuth 2.0 - The fundamentals, the good , the bad, technical primer and commo...
OAuth 2.0  - The fundamentals, the good , the bad, technical primer and commo...OAuth 2.0  - The fundamentals, the good , the bad, technical primer and commo...
OAuth 2.0 - The fundamentals, the good , the bad, technical primer and commo...
Good Dog Labs, Inc.
 
#5 WSO2 Masterclassitalia - WSO2 Identity Server, un approccio OAUTH2
#5 WSO2 Masterclassitalia - WSO2 Identity Server, un approccio OAUTH2#5 WSO2 Masterclassitalia - WSO2 Identity Server, un approccio OAUTH2
#5 WSO2 Masterclassitalia - WSO2 Identity Server, un approccio OAUTH2
Profesia Srl, Lynx Group
 
Oauth Nightmares Abstract OAuth Nightmares
Oauth Nightmares Abstract OAuth Nightmares Oauth Nightmares Abstract OAuth Nightmares
Oauth Nightmares Abstract OAuth Nightmares
Nino Ho
 
OAuth 2
OAuth 2OAuth 2
OAuth 2
ChrisWood262
 
OAuth with Salesforce - Demystified
OAuth with Salesforce - DemystifiedOAuth with Salesforce - Demystified
OAuth with Salesforce - Demystified
Calvin Noronha
 

Similar to Single-Page-Application & REST security (20)

Rest API Security - A quick understanding of Rest API Security
Rest API Security - A quick understanding of Rest API SecurityRest API Security - A quick understanding of Rest API Security
Rest API Security - A quick understanding of Rest API Security
 
Securing RESTful API
Securing RESTful APISecuring RESTful API
Securing RESTful API
 
Demystifying SAML 2.0,Oauth 2.0, OpenID Connect
Demystifying SAML 2.0,Oauth 2.0, OpenID ConnectDemystifying SAML 2.0,Oauth 2.0, OpenID Connect
Demystifying SAML 2.0,Oauth 2.0, OpenID Connect
 
O auth2 with angular js
O auth2 with angular jsO auth2 with angular js
O auth2 with angular js
 
OAuth2 Introduction
OAuth2 IntroductionOAuth2 Introduction
OAuth2 Introduction
 
Restful api
Restful apiRestful api
Restful api
 
OAuth 2.0 and OpenID Connect
OAuth 2.0 and OpenID ConnectOAuth 2.0 and OpenID Connect
OAuth 2.0 and OpenID Connect
 
OAuth - Don’t Throw the Baby Out with the Bathwater
OAuth - Don’t Throw the Baby Out with the Bathwater OAuth - Don’t Throw the Baby Out with the Bathwater
OAuth - Don’t Throw the Baby Out with the Bathwater
 
REST API Authentication Methods.pdf
REST API Authentication Methods.pdfREST API Authentication Methods.pdf
REST API Authentication Methods.pdf
 
Oauth2.0
Oauth2.0Oauth2.0
Oauth2.0
 
SAML VS OAuth 2.0 VS OpenID Connect
SAML VS OAuth 2.0 VS OpenID ConnectSAML VS OAuth 2.0 VS OpenID Connect
SAML VS OAuth 2.0 VS OpenID Connect
 
Oauth2 and OWSM OAuth2 support
Oauth2 and OWSM OAuth2 supportOauth2 and OWSM OAuth2 support
Oauth2 and OWSM OAuth2 support
 
UserCentric Identity based Service Invocation
UserCentric Identity based Service InvocationUserCentric Identity based Service Invocation
UserCentric Identity based Service Invocation
 
Protecting your APIs with OAuth 2.0
Protecting your APIs with OAuth 2.0Protecting your APIs with OAuth 2.0
Protecting your APIs with OAuth 2.0
 
Api security
Api security Api security
Api security
 
OAuth 2.0 - The fundamentals, the good , the bad, technical primer and commo...
OAuth 2.0  - The fundamentals, the good , the bad, technical primer and commo...OAuth 2.0  - The fundamentals, the good , the bad, technical primer and commo...
OAuth 2.0 - The fundamentals, the good , the bad, technical primer and commo...
 
#5 WSO2 Masterclassitalia - WSO2 Identity Server, un approccio OAUTH2
#5 WSO2 Masterclassitalia - WSO2 Identity Server, un approccio OAUTH2#5 WSO2 Masterclassitalia - WSO2 Identity Server, un approccio OAUTH2
#5 WSO2 Masterclassitalia - WSO2 Identity Server, un approccio OAUTH2
 
Oauth Nightmares Abstract OAuth Nightmares
Oauth Nightmares Abstract OAuth Nightmares Oauth Nightmares Abstract OAuth Nightmares
Oauth Nightmares Abstract OAuth Nightmares
 
OAuth 2
OAuth 2OAuth 2
OAuth 2
 
OAuth with Salesforce - Demystified
OAuth with Salesforce - DemystifiedOAuth with Salesforce - Demystified
OAuth with Salesforce - Demystified
 

More from Igor Bossenko

Healthcare experience (black & white)
Healthcare experience (black & white)Healthcare experience (black & white)
Healthcare experience (black & white)
Igor Bossenko
 
Overview of Estonian Health Information System
Overview of  Estonian Health Information System Overview of  Estonian Health Information System
Overview of Estonian Health Information System
Igor Bossenko
 
What is FHIR
What is FHIRWhat is FHIR
What is FHIR
Igor Bossenko
 
Гравицапа
ГравицапаГравицапа
Гравицапа
Igor Bossenko
 
Полосатый рейс
Полосатый рейсПолосатый рейс
Полосатый рейс
Igor Bossenko
 
FHIR Developer Days 2015. Study on db implementations for FHIR server
FHIR Developer Days 2015. Study on db implementations for FHIR serverFHIR Developer Days 2015. Study on db implementations for FHIR server
FHIR Developer Days 2015. Study on db implementations for FHIR server
Igor Bossenko
 
Webapp security (with notes)
Webapp security (with notes)Webapp security (with notes)
Webapp security (with notes)
Igor Bossenko
 
Estonian EMR (еЗдоровье в Эстонии)
Estonian EMR (еЗдоровье в Эстонии)Estonian EMR (еЗдоровье в Эстонии)
Estonian EMR (еЗдоровье в Эстонии)
Igor Bossenko
 
Introduction to HL7 FHIR
Introduction to HL7 FHIRIntroduction to HL7 FHIR
Introduction to HL7 FHIR
Igor Bossenko
 

More from Igor Bossenko (9)

Healthcare experience (black & white)
Healthcare experience (black & white)Healthcare experience (black & white)
Healthcare experience (black & white)
 
Overview of Estonian Health Information System
Overview of  Estonian Health Information System Overview of  Estonian Health Information System
Overview of Estonian Health Information System
 
What is FHIR
What is FHIRWhat is FHIR
What is FHIR
 
Гравицапа
ГравицапаГравицапа
Гравицапа
 
Полосатый рейс
Полосатый рейсПолосатый рейс
Полосатый рейс
 
FHIR Developer Days 2015. Study on db implementations for FHIR server
FHIR Developer Days 2015. Study on db implementations for FHIR serverFHIR Developer Days 2015. Study on db implementations for FHIR server
FHIR Developer Days 2015. Study on db implementations for FHIR server
 
Webapp security (with notes)
Webapp security (with notes)Webapp security (with notes)
Webapp security (with notes)
 
Estonian EMR (еЗдоровье в Эстонии)
Estonian EMR (еЗдоровье в Эстонии)Estonian EMR (еЗдоровье в Эстонии)
Estonian EMR (еЗдоровье в Эстонии)
 
Introduction to HL7 FHIR
Introduction to HL7 FHIRIntroduction to HL7 FHIR
Introduction to HL7 FHIR
 

Recently uploaded

The Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and SalesThe Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and Sales
Laura Byrne
 
How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...
Product School
 
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
BookNet Canada
 
When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...
Elena Simperl
 
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
Product School
 
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Product School
 
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
Product School
 
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
Product School
 
The Future of Platform Engineering
The Future of Platform EngineeringThe Future of Platform Engineering
The Future of Platform Engineering
Jemma Hussein Allen
 
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Jeffrey Haguewood
 
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdfFIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance
 
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualitySoftware Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Inflectra
 
Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*
Frank van Harmelen
 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
KatiaHIMEUR1
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance
 
JMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and GrafanaJMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and Grafana
RTTS
 
Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...
Product School
 
Leading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdfLeading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdf
OnBoard
 
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 previewState of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
Prayukth K V
 
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Thierry Lestable
 

Recently uploaded (20)

The Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and SalesThe Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and Sales
 
How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...
 
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
 
When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...
 
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
 
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...
 
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
 
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
 
The Future of Platform Engineering
The Future of Platform EngineeringThe Future of Platform Engineering
The Future of Platform Engineering
 
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
 
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdfFIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
 
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualitySoftware Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
 
Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*
 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
 
JMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and GrafanaJMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and Grafana
 
Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...
 
Leading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdfLeading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdf
 
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 previewState of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
 
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
 

Single-Page-Application & REST security

  • 2. Agenda Authentication How protect REST services API-Key Secret-key Signature Nonce, non-repuduation OAuth1 vs OAuth2 Authorization Profiles Stateless vs stateful HATEOAS Atom/RSS
  • 3. „Legacy“ solutions HTTP Basic authentication Username/password in URL
  • 5. Authentication with API Key Simplest way for REST authentication Used for public or open APIs Twitter, Google Maps, New York Times, … API key usually used for Identify the caller Check IP addresses of caller To limit the number of requests Authentication with API Key only is unsecure
  • 6. Public Google API Public API is usually very atomic
  • 7. New Google credential generation Usually you must have separate API-Key for every API group
  • 8. Authentication with secret key API-key for identity Secret-key (symmetric shared key) for authentication Authentication with additional secret in header is not enough secure (man-in-the-middle attacker risk)
  • 9. Authentication with signature API-key for identity Secret-key for authentication, but secret key never sent with request Signature header is a HMAC-SHA256 hash of the nonce concatenated with the full URL and body of the HTTP request, encoded using your API secret-key. Authentication with signature is secure.
  • 11. Nonce Nonce is an arbitrary (unique) number/string Randon number Number based on timestamp Nonce included into signature Requests with signature and nonce is very secure and protect from replay attacks
  • 12. Oauth (1.0) In 2006 were no open standards for API access delegation. OAuth was designed to solve the application-to-application security problem. OAuth Core 1.0 was released in 2007.
  • 13. OAuth 1.0 concept Terms User, Consumer, Service Provider, Protected Resource, Provider API 5 parameters to work with OAuth 1.0 Consumer key & Consumer secret Request token URL Authorize URL Access token URL OAuth 1.0 components Token = Key + Secret Message = Document + Digital Signature Application = Consumer + Access to API
  • 15. OAuth 1.0 summary OAuth 1.0 = Fetch Request Token + Redirect to Authorization + Fetch Access Token + Call API + Signature calculated with secret-key
  • 16. vs OpenID - protocol for fast user registration on the current website (“protocol for users”) OAuth - protocol for authorized access to the third-party vendor API („protocol for robots“ ).
  • 17. Non-repudiation Non-repuduation - method to ensure that a transferred message has been sent and received by the parties claiming to have sent and received the message Nonrepudiation can be obtained through the use of: Digital signatures Confirmation services Timestamp
  • 18. OAuth 1.0 vs Estonian xRoad xRoad OAuth PKI public/private certificates string as secret key or public/private certificates Certificate storage Secure server Any verified certificate storage, such as AD, .. Organization RIA (Estonian Information System Authority) Required API Developed by RIA (in estonian) Required Special software xRoad server No Scope Estonian standard International standard Protocol SOAP REST
  • 19. OAuth 2.0 OAuth 2.0 focuses on client developer simplicity while providing specific authorization flows for web applications, desktop applications, mobile phones, and living room devices. OAuth 2.0 is more a framework than it is a defined protocol. OAuth 2.0 is not backwards compatible with OAuth 1.0. In July 2012, Eran Hammer resigned his role of lead author for the OAuth 2.0 project, withdrew from the IETF working group, and removed his name from the specification. Hammer: „OAuth 2.0 is more complex, less interoperable, less useful, more incomplete, and most importantly, less secure."
  • 20. List of OAuth service providers (May/2014) Service provider OAuth protocol Amazon 2.0 AOL 2.0 Basecamp 2.0 Bitbucket 1.0a Dropbox 1.0, 2.0 Evernote 1 Facebook 2.0 draft 12 Flickr 1.0a Foursquare 2 GitHub 2 Goodreads 1 Google 2 Google App Engine 1.0a Instagram 2 Intel Cloud Services 2 LinkedIn 1.0a, 2.0 Microsoft (Hotmail, Windows Live, Messanger, Xbox) 2 Netflix 1.0a PayPal 2 Twitter 1.0a, 2.0 Ubuntu One 1 Vimeo 1.0a Yandex 2
  • 21. OAuth 1.0 vs OAuth 2.0 Problems of OAuth 1.0 Authentication and Signatures on client side User Experience and Alternative Token Issuance Options Performance at Scale OAuth 2.0 changes: OAuth 2.0 relies completely on SSL for some degree of confidentiality and server authentication. Cryptography-free option for authentication which is based on existing cookie authentication architecture. Simplified signatures Separation of Roles (SSO support) Short-lived tokens with Long-lived authorizations
  • 22. OAuth 2.0 flows Web Server Flow – for clients that are part of a web server application, accessible via HTTP requests. This is a simpler version of the flow provided by OAuth 1.0. User-Agent Flow – for clients running inside a user-agent (browser). Device Flow – suitable for clients executing on limited devices, but where the end-user has separate access to a browser on another computer or device. Username and Password Flow – used in cases where the user trusts the client to handle its credentials. Client Credentials Flow (JWT) – the client uses its credentials to obtain an access token. This flow supports what is known as the 2- legged scenario. Assertion Flow – the client presents an assertion such as a SAML assertion to the authorization server in exchange for an access token.
  • 24. OAuth2 Web Server Flow details
  • 25. SSO Particular case of Web Server Flow when Client App and Resource Server use the same Authorization Server
  • 27. OAuth2 Resource Owner Password Credentian Flow
  • 29. OAuth2 JSON Web Token (JWT) Flow
  • 32. Does OAuth1 better than OAuth2? Does OAuth1 better than OAuth2? No, they have different purpose: OAuth1 for server to server communication and OAuth2 for user/device to server Does OAuth1 more secure than OAuth2? Yes and No OAuth 1.0 may be used without HTTPS But, OAuth2 same secure as SSL
  • 33. When to use OAuth1 & OAuth2? OAuth 1.0 – server-to-server OAuth 2.0 – browser/device/client-to- server
  • 34. I use OAuth. Does my app protected? No JSON may be changed before sending Any URI may be called OAuth just authentication for your app and authorization to 3d-party apps You may wants to do Authorization and role/privilege check Check of data consistency State check or check of allowed actions
  • 35. Authorization You must check permissions every time when REST service runs inside service You must also identify client and context by cookie or by certificate
  • 36. Data consistency REST design “Big” API vs “small” API Profiles Atom/RSS
  • 37. “Big” API vs “small” API 1 REST service or 3 services?
  • 38. Profiles Тhe server checks the data sent regarding the xsd or profile or... Profile example Servoice LivingSubject Profile „Ivoice 1" Profile „Invoice 2" Profile „Invoice 3" Recipient/Person N/A M N/A Recipient/Organization N/A N/A M Owner/-organization N/A O M Owner/Person N/A O O Row/Article M M M Row/Quantity N/A M M Row/Sum N/A N/A O Payment/Sum O O N/A constraints Row.size()==1 Row.size()==1 Row.size()>0
  • 39. State validation Stateless OAuth2 provides token expiration You can store frequently used data in HTTP Cookie Local storage Memory DB Cache (like Ehcache) Use HATEOAS (Hypermedia as the Engine of Application State or hypermedia-driven system) for form validation Stateful You can use it too, but why?
  • 40. HATEOAS Data and links content separated one from another Server may store allowed links and refuse all other REST queries A simple JSON presentation is traditionally rendered as: { "name" : "Alice" } A HATEOAS-based response would provide relevant links like this: { "name": "Alice", "links": [ { "rel": "self", "href": "http://localhost:8080/customer/1" } ] }
  • 41. HATEOAS and the PayPal REST Payment API [ { "href": "https://api.sandbox.paypal.com/v1/payments/payment/PAY-6RV70583SB702805EKEYSZ6Y", "rel": "self", "method": "GET" }, { "href": "https://www.sandbox.paypal.com/webscr?cmd=_express-checkout&token=EC-60U79048BN7719609", "rel": "approval_url", "method": "REDIRECT" }, { "href": "https://api.sandbox.paypal.com/v1/payments/payment/PAY-6RV70583SB702805EKEYSZ6Y/execute", "rel": "execute", "method": "POST" } ] https://developer.paypal.com/docs/integration/direct/paypal- rest-payment-hateoas-links/
  • 42. Use of OАuth OAuth can be used as an authorizing mechanism to consume secured RSS/ATOM feeds RSS/ATOM feeds mechanism helps to manage state

Editor's Notes

  1. The client credentials grant type must only be used by confidential clients. The client can request an access token using only its client credentials (or other supported means of authentication) when the client is requesting access to the protected resources under its control. The client can also request access to those of another Resource Owner that has been previously arranged with the Authorization Server (the method of which is beyond the scope of the specification).
  2. A JSON Web Token (JWT) is a JSON-based security token encoding that enables identity and security information to be shared across security domains. In the OAuth 2.0 JWT flow, the client application is assumed to be a confidential client that can store the client application’s private key. The X.509 certificate that matches the client’s private key must be registered in the API Manager. The API Gateway uses this certificate to verify the signature of the JWT claim. POST /api/oauth/token HTTP/1.1 Content-Length: 424 Content-Type: application/x-www-form-urlencoded; charset=UTF-8 Host: 192.168.0.48:8080 grant_type=urn%3Aietf%3Aparams%3Aoauth%3Agrant-type%3Ajwt-bearer&assertion=eyJhbGciOiJS UzI1NiJ9.eyJpc3MiOiAiU2FtcGxlQ29uZmlkZW50aWFsQXBwIiwgImF1ZCI6ICJodHRwOi8vYXBpc2Vy dmVyL2FwaS9vYXV0aC90b2tlbiIsICJleHAiOiAiMTM0MTM1NDYwNSIsICJpYXQiOiAiMTM0MTM1NDMwN SJ9.ilWR8O8OlbQtT5zBaGIQjveOZFIWGTkdVC6LofJ8dN0akvvD0m7IvUZtPp4dx3KdEDj4YcsyCEAPh fopUlZO3LE-iNPlbxB5dsmizbFIc2oGZr7Zo4IlDf92OJHq9DGqwQosJ-s9GcIRQk-IUPF4lVy1Q7PidP WKR9ohm3c2gt8