SlideShare a Scribd company logo
How to Use Stormpath in
Angular.js
Robert Damphousse @robertjd_
Lead Front-End Developer, Stormpath
About Stormpath
• User Management API for Developers
• Password security
• Authentication and Authorization
• LDAP Cloud Sync
• Instant-on, scalable, and highly available
• Free for developers
Talk Overview
• Authentication in Single Page Apps (SPAs)
• JWTs instead of Session IDs
• Securing cookies
• Where does Stormpath fit in your architecture?
• End-to-end example with Angular.js +
Express.js
SPAs – What’s different?
• Data resources are treated differently than
application resources (HTML/CSS/JS assets
are separated from data resources)
• Forces you to build a proper API, likely a
REST + JSON API
• User Experience (UX) gets a spotlight
SPAs – What’s the same?
• Browser JavaScript is an untrusted
environment!
• Your server is responsible for resource
authentication and authorization
• You CAN use Cookies for authentication
SPAs – Authentication Strategies
• Session identifiers – opaque string in a
cookie. You CAN use this strategy
• Access Tokens are better – JWT
JSON Web Tokens (JWT)
• Used to persist authentication assertions
• Signed, structured
• Should be stored in cookies, not local
storage
JSON Web Tokens (JWT)
{
"typ":"JWT",
"alg":"HS256"
}
{
"iss": "http://trustyapp.com/”,
"exp": 1300819380,
"sub": "users/8983462",
"scope": "self api/buy"
}
tß´—™à%O˜v+nî…SZu¯µ€U…8H×
Header
Body (‘Claims’)
Cryptographic Signature
Why Cookies?
• Automatically supplied on every request
• HttpOnly flag prevents the JS environment
from accessing the cookie
• Secure flag ensures the cookie is only
transmitted over HTTPS
• Can restrict by subdomain and path
Why Not Local Storage?
• Exposed to JS environment, whereas
HttpOnly cookies are not.
• Can’t restrict visibility by path, only
subdomain
• https://www.owasp.org/index.php/HTML5_S
ecurity_Cheat_Sheet#Storage_APIs
Securing Cookies
• Use the HttpOnly and Secure flags.
• Need to protect against Cross-Site Request
Forgery (CSRF) attacks
• https://www.owasp.org/index.php/Cross-
Site_Request_Forgery_(CSRF)
Stormpath, Angular
&
Your Architecture
Your Server
Stormpath SDK
User’s Web
Browser
(SPA)
Stormpath
Angular SDK
Stormpath
HTTP API
Architecture Overview
Token Authentication
(JWT)
Stormpath API
Key Authentication
Integration Example
Express.JS Backend
End-to-End Walkthrough:
http://docs.stormpath.com/angularjs/guide/
API Documentation:
https://docs.stormpath.com/angularjs/sdk/#/api
Example Application (inside the repo):
https://github.com/stormpath/
stormpath-sdk-angularjs
Online Guide & Docs:
Server-Side:
• Create the Stormpath Middleware
• Attach the default route handlers
• Use specific middleware for API
Authentication
Stormpath, Angular & Your Architecture
Server-Side: Create the Middleware
var app = express();
var stormpathSdk = require('stormpath-sdk-express');
var spMiddleware = stormpathSdk.createMiddleware();
Server-Side: Attach default route handlers
spMiddleware.attachDefaults(app);
Server-Side: Use API Authentication
app.use('/api/*', spMiddleware.authenticate);
Client-Side:
• Add the Stormpath Angular SDK to your
Angular application
• Configure UI Router integration
• Use directives for built-in forms
• Use UI Router config for view authorization
Stormpath, Angular & Your Architecture
Client-Side: Add the SDK Dependencies
Stormpath, Angular & Your Architecture
angular.module('MyApplication', [
'ngCookies',
'ngResource',
'ngSanitize',
'ui.router',
'stormpath',
'stormpath.templates'
])
Client-Side: UI Router Integration
angular.module('MyApplication')
.config(function ($urlRouterProvider, $locationProvider) {
$urlRouterProvider.otherwise('/');
$locationProvider.html5Mode(true);
})
.run(function($stormpath){
$stormpath.uiRouter({
loginState: 'login',
defaultPostLoginState: 'main'
});
});
Client-Side: Built-in Form Directives
<div sp-login-form></div>
Client-Side: Built-in Form Directives
<div sp-registration-form post-login-state="main”></div>
Client-Side: Auth Directives
Classic Use Case: Menu bar changes when logged in
Logged In:
Not
Logged
In:
Client-Side: Auth Directives
<li if-not-user>
<a ui-sref="login">Login</a>
</li>
<li if-user>
<a ui-sref="main" sp-logout>Logout</a>
</li>
“If User” and “If Not User”
Client-Side: View Authentication
angular.module('MyApplication')
.config(function ($stateProvider) {
$stateProvider
.state('profile', {
url: '/profile',
templateUrl: 'app/profile/profile.html',
controller: 'ProfileCtrl',
sp: {
authenticate: true,
}
});
});
Client-Side: View Authorization
angular.module('MyApplication')
.config(function ($stateProvider) {
$stateProvider
.state('profile', {
url: '/profile',
templateUrl: 'app/profile/profile.html',
controller: 'ProfileCtrl',
sp: {
authorize: {
group: ‘admins’
}
}
});
});
Client-Side: Behind the Scenes..
• On login: Stormpath Express SDK sends a
JWT to Angular, stored in a secure cookie
• Browser automatically supplies JWT cookie
on all requets
• /me route is served by SDK, so that Angular
can know context about current user
Recap..
• Stormpath SDK on your server and in your SPA
• JWTs are used instead of sessions
• Angular SDK provides directives for forms and
authentication state
• Angular SDK will work with any backend
• User data is stored and secured behind the Stormpath API
Stormpath for Authentication & User Management
Stormpath can handle authentication and authorization for
your API, SPA or mobile app, as well as a range of advanced
user features
• Single Sign-On Across Your Apps
• API Authentication & Key Management
• Token Based Authentication
• Oauth Workflows
• JWTs
Implementations in your Library of choice:
https://docs.stormpath.com/home/
Get started with your free Stormpath
developer account!
https://api.stormpath.com/register
Questions?
support@stormpath.com
Ad

Recommended

PPTX
Spring Boot Authentication...and More!
Stormpath
 
PPTX
Multi-Tenancy with Spring Boot
Stormpath
 
PPTX
Stormpath 101: Spring Boot + Spring Security
Stormpath
 
PDF
Mobile Authentication for iOS Applications - Stormpath 101
Stormpath
 
PPTX
Secure API Services in Node with Basic Auth and OAuth2
Stormpath
 
PPTX
JWTs for CSRF and Microservices
Stormpath
 
PPTX
REST API Security: OAuth 2.0, JWTs, and More!
Stormpath
 
PDF
Securing Web Applications with Token Authentication
Stormpath
 
PDF
Build a REST API for your Mobile Apps using Node.js
Stormpath
 
PPTX
Instant Security & Scalable User Management with Spring Boot
Stormpath
 
PPTX
Secure Your REST API (The Right Way)
Stormpath
 
PPTX
Building a document e-signing workflow with Azure Durable Functions
Joonas Westlin
 
PDF
SPUnite17 Who Are You and What Do You Want
NCCOMMS
 
PDF
Programming with Azure Active Directory
Joonas Westlin
 
PPTX
Spring Security
Manish Sharma
 
PDF
O365Con18 - Introduction to Azure Web Applications - Eric Shupps
NCCOMMS
 
PPTX
Securing SharePoint Apps with OAuth
Kashif Imran
 
PDF
O365Con18 - Azure Active Directory - Sasha Kranjac & Mustafa Toroman
NCCOMMS
 
PDF
O365Con18 - External Collaboration with Azure B2B - Sjoukje Zaal
NCCOMMS
 
PDF
O365Con18 - Connect SharePoint Framework Solutions to API's secured with Azur...
NCCOMMS
 
PPTX
Deep thoughts from the real world of azure
Michele Leroux Bustamante
 
PPTX
Api security
teodorcotruta
 
PDF
O365Con18 - Red Team vs Blue Team - Sasha Kranjac & Mustafa Toroman
NCCOMMS
 
PPTX
SSO IN/With Drupal and Identitiy Management
Manish Harsh
 
PPTX
Introduction to Azure Web Applications for Office and SharePoint Developers
Eric Shupps
 
PDF
CIS 2015 SSO for Mobile and Web Apps Ashish Jain
CloudIDSummit
 
PPTX
Zero Credential Development with Managed Identities for Azure resources
Joonas Westlin
 
PPTX
Zero credential development with managed identities
Joonas Westlin
 
PPTX
JWT Authentication with AngularJS
robertjd
 
PDF
Understanding Identity in the World of Web APIs – Ronnie Mitra, API Architec...
CA API Management
 

More Related Content

What's hot (20)

PDF
Build a REST API for your Mobile Apps using Node.js
Stormpath
 
PPTX
Instant Security & Scalable User Management with Spring Boot
Stormpath
 
PPTX
Secure Your REST API (The Right Way)
Stormpath
 
PPTX
Building a document e-signing workflow with Azure Durable Functions
Joonas Westlin
 
PDF
SPUnite17 Who Are You and What Do You Want
NCCOMMS
 
PDF
Programming with Azure Active Directory
Joonas Westlin
 
PPTX
Spring Security
Manish Sharma
 
PDF
O365Con18 - Introduction to Azure Web Applications - Eric Shupps
NCCOMMS
 
PPTX
Securing SharePoint Apps with OAuth
Kashif Imran
 
PDF
O365Con18 - Azure Active Directory - Sasha Kranjac & Mustafa Toroman
NCCOMMS
 
PDF
O365Con18 - External Collaboration with Azure B2B - Sjoukje Zaal
NCCOMMS
 
PDF
O365Con18 - Connect SharePoint Framework Solutions to API's secured with Azur...
NCCOMMS
 
PPTX
Deep thoughts from the real world of azure
Michele Leroux Bustamante
 
PPTX
Api security
teodorcotruta
 
PDF
O365Con18 - Red Team vs Blue Team - Sasha Kranjac & Mustafa Toroman
NCCOMMS
 
PPTX
SSO IN/With Drupal and Identitiy Management
Manish Harsh
 
PPTX
Introduction to Azure Web Applications for Office and SharePoint Developers
Eric Shupps
 
PDF
CIS 2015 SSO for Mobile and Web Apps Ashish Jain
CloudIDSummit
 
PPTX
Zero Credential Development with Managed Identities for Azure resources
Joonas Westlin
 
PPTX
Zero credential development with managed identities
Joonas Westlin
 
Build a REST API for your Mobile Apps using Node.js
Stormpath
 
Instant Security & Scalable User Management with Spring Boot
Stormpath
 
Secure Your REST API (The Right Way)
Stormpath
 
Building a document e-signing workflow with Azure Durable Functions
Joonas Westlin
 
SPUnite17 Who Are You and What Do You Want
NCCOMMS
 
Programming with Azure Active Directory
Joonas Westlin
 
Spring Security
Manish Sharma
 
O365Con18 - Introduction to Azure Web Applications - Eric Shupps
NCCOMMS
 
Securing SharePoint Apps with OAuth
Kashif Imran
 
O365Con18 - Azure Active Directory - Sasha Kranjac & Mustafa Toroman
NCCOMMS
 
O365Con18 - External Collaboration with Azure B2B - Sjoukje Zaal
NCCOMMS
 
O365Con18 - Connect SharePoint Framework Solutions to API's secured with Azur...
NCCOMMS
 
Deep thoughts from the real world of azure
Michele Leroux Bustamante
 
Api security
teodorcotruta
 
O365Con18 - Red Team vs Blue Team - Sasha Kranjac & Mustafa Toroman
NCCOMMS
 
SSO IN/With Drupal and Identitiy Management
Manish Harsh
 
Introduction to Azure Web Applications for Office and SharePoint Developers
Eric Shupps
 
CIS 2015 SSO for Mobile and Web Apps Ashish Jain
CloudIDSummit
 
Zero Credential Development with Managed Identities for Azure resources
Joonas Westlin
 
Zero credential development with managed identities
Joonas Westlin
 

Similar to How to Use Stormpath in angular js (20)

PPTX
JWT Authentication with AngularJS
robertjd
 
PDF
Understanding Identity in the World of Web APIs – Ronnie Mitra, API Architec...
CA API Management
 
PDF
AppSec Tel Aviv - OWASP Top 10 For JavaScript Developers
Lewis Ardern
 
PPTX
Build A Killer Client For Your REST+JSON API
Stormpath
 
PDF
OAuth2 and Spring Security
Orest Ivasiv
 
PDF
Building APIs in an easy way using API Platform
Antonio Peric-Mazar
 
PPTX
Hackazon realistic e-commerce Hack platform
Ihor Uzhvenko
 
PPTX
Hacking mobile apps
kunwaratul hax0r
 
PPTX
Single Page Applications - Where Security Goes to Die
Curity
 
PPTX
How to build Simple yet powerful API.pptx
Channa Ly
 
PDF
Kotlin server side frameworks
Ken Yee
 
PPTX
Securing RESTful APIs using OAuth 2 and OpenID Connect
Jonathan LeBlanc
 
PDF
OWASP SF - Reviewing Modern JavaScript Applications
Lewis Ardern
 
PPTX
API Services: Building State-of-the-Art APIs
Apigee | Google Cloud
 
PDF
Pentesting RESTful WebServices v1.0
n|u - The Open Security Community
 
PPTX
AngularJS training - Day 1 - Basics: Why, What and basic features of AngularJS
murtazahaveliwala
 
PDF
ConFoo 2015 - Securing RESTful resources with OAuth2
Rodrigo Cândido da Silva
 
PPTX
Spa Secure Coding Guide
Geoffrey Vandiest
 
PPT
UserCentric Identity based Service Invocation
guestd5dde6
 
PDF
API SECURITY
Tubagus Rizky Dharmawan
 
JWT Authentication with AngularJS
robertjd
 
Understanding Identity in the World of Web APIs – Ronnie Mitra, API Architec...
CA API Management
 
AppSec Tel Aviv - OWASP Top 10 For JavaScript Developers
Lewis Ardern
 
Build A Killer Client For Your REST+JSON API
Stormpath
 
OAuth2 and Spring Security
Orest Ivasiv
 
Building APIs in an easy way using API Platform
Antonio Peric-Mazar
 
Hackazon realistic e-commerce Hack platform
Ihor Uzhvenko
 
Hacking mobile apps
kunwaratul hax0r
 
Single Page Applications - Where Security Goes to Die
Curity
 
How to build Simple yet powerful API.pptx
Channa Ly
 
Kotlin server side frameworks
Ken Yee
 
Securing RESTful APIs using OAuth 2 and OpenID Connect
Jonathan LeBlanc
 
OWASP SF - Reviewing Modern JavaScript Applications
Lewis Ardern
 
API Services: Building State-of-the-Art APIs
Apigee | Google Cloud
 
Pentesting RESTful WebServices v1.0
n|u - The Open Security Community
 
AngularJS training - Day 1 - Basics: Why, What and basic features of AngularJS
murtazahaveliwala
 
ConFoo 2015 - Securing RESTful resources with OAuth2
Rodrigo Cândido da Silva
 
Spa Secure Coding Guide
Geoffrey Vandiest
 
UserCentric Identity based Service Invocation
guestd5dde6
 
Ad

More from Stormpath (18)

PDF
The Ultimate Guide to Mobile API Security
Stormpath
 
PDF
Getting Started With Angular
Stormpath
 
PDF
Building Beautiful REST APIs with ASP.NET Core
Stormpath
 
PDF
JWTs in Java for CSRF and Microservices
Stormpath
 
PPTX
Beautiful REST+JSON APIs with Ion
Stormpath
 
PPTX
Storing User Files with Express, Stormpath, and Amazon S3
Stormpath
 
PPTX
Custom Data Search with Stormpath
Stormpath
 
PDF
Building Beautiful REST APIs in ASP.NET Core
Stormpath
 
PPTX
Browser Security 101
Stormpath
 
PPTX
Token Authentication in ASP.NET Core
Stormpath
 
PPTX
Token Authentication for Java Applications
Stormpath
 
PPTX
Building Secure User Interfaces With JWTs (JSON Web Tokens)
Stormpath
 
PPTX
Rest API Security
Stormpath
 
PPTX
Elegant Rest Design Webinar
Stormpath
 
PPTX
Build a Node.js Client for Your REST+JSON API
Stormpath
 
PPTX
So long scrum, hello kanban
Stormpath
 
PPTX
REST API Design for JAX-RS And Jersey
Stormpath
 
PPTX
Design Beautiful REST + JSON APIs
Stormpath
 
The Ultimate Guide to Mobile API Security
Stormpath
 
Getting Started With Angular
Stormpath
 
Building Beautiful REST APIs with ASP.NET Core
Stormpath
 
JWTs in Java for CSRF and Microservices
Stormpath
 
Beautiful REST+JSON APIs with Ion
Stormpath
 
Storing User Files with Express, Stormpath, and Amazon S3
Stormpath
 
Custom Data Search with Stormpath
Stormpath
 
Building Beautiful REST APIs in ASP.NET Core
Stormpath
 
Browser Security 101
Stormpath
 
Token Authentication in ASP.NET Core
Stormpath
 
Token Authentication for Java Applications
Stormpath
 
Building Secure User Interfaces With JWTs (JSON Web Tokens)
Stormpath
 
Rest API Security
Stormpath
 
Elegant Rest Design Webinar
Stormpath
 
Build a Node.js Client for Your REST+JSON API
Stormpath
 
So long scrum, hello kanban
Stormpath
 
REST API Design for JAX-RS And Jersey
Stormpath
 
Design Beautiful REST + JSON APIs
Stormpath
 
Ad

How to Use Stormpath in angular js

  • 1. How to Use Stormpath in Angular.js Robert Damphousse @robertjd_ Lead Front-End Developer, Stormpath
  • 2. About Stormpath • User Management API for Developers • Password security • Authentication and Authorization • LDAP Cloud Sync • Instant-on, scalable, and highly available • Free for developers
  • 3. Talk Overview • Authentication in Single Page Apps (SPAs) • JWTs instead of Session IDs • Securing cookies • Where does Stormpath fit in your architecture? • End-to-end example with Angular.js + Express.js
  • 4. SPAs – What’s different? • Data resources are treated differently than application resources (HTML/CSS/JS assets are separated from data resources) • Forces you to build a proper API, likely a REST + JSON API • User Experience (UX) gets a spotlight
  • 5. SPAs – What’s the same? • Browser JavaScript is an untrusted environment! • Your server is responsible for resource authentication and authorization • You CAN use Cookies for authentication
  • 6. SPAs – Authentication Strategies • Session identifiers – opaque string in a cookie. You CAN use this strategy • Access Tokens are better – JWT
  • 7. JSON Web Tokens (JWT) • Used to persist authentication assertions • Signed, structured • Should be stored in cookies, not local storage
  • 8. JSON Web Tokens (JWT) { "typ":"JWT", "alg":"HS256" } { "iss": "http://trustyapp.com/”, "exp": 1300819380, "sub": "users/8983462", "scope": "self api/buy" } tß´—™à%O˜v+nî…SZu¯µ€U…8H× Header Body (‘Claims’) Cryptographic Signature
  • 9. Why Cookies? • Automatically supplied on every request • HttpOnly flag prevents the JS environment from accessing the cookie • Secure flag ensures the cookie is only transmitted over HTTPS • Can restrict by subdomain and path
  • 10. Why Not Local Storage? • Exposed to JS environment, whereas HttpOnly cookies are not. • Can’t restrict visibility by path, only subdomain • https://www.owasp.org/index.php/HTML5_S ecurity_Cheat_Sheet#Storage_APIs
  • 11. Securing Cookies • Use the HttpOnly and Secure flags. • Need to protect against Cross-Site Request Forgery (CSRF) attacks • https://www.owasp.org/index.php/Cross- Site_Request_Forgery_(CSRF)
  • 13. Your Server Stormpath SDK User’s Web Browser (SPA) Stormpath Angular SDK Stormpath HTTP API Architecture Overview Token Authentication (JWT) Stormpath API Key Authentication
  • 15. End-to-End Walkthrough: http://docs.stormpath.com/angularjs/guide/ API Documentation: https://docs.stormpath.com/angularjs/sdk/#/api Example Application (inside the repo): https://github.com/stormpath/ stormpath-sdk-angularjs Online Guide & Docs:
  • 16. Server-Side: • Create the Stormpath Middleware • Attach the default route handlers • Use specific middleware for API Authentication Stormpath, Angular & Your Architecture
  • 17. Server-Side: Create the Middleware var app = express(); var stormpathSdk = require('stormpath-sdk-express'); var spMiddleware = stormpathSdk.createMiddleware();
  • 18. Server-Side: Attach default route handlers spMiddleware.attachDefaults(app);
  • 19. Server-Side: Use API Authentication app.use('/api/*', spMiddleware.authenticate);
  • 20. Client-Side: • Add the Stormpath Angular SDK to your Angular application • Configure UI Router integration • Use directives for built-in forms • Use UI Router config for view authorization Stormpath, Angular & Your Architecture
  • 21. Client-Side: Add the SDK Dependencies Stormpath, Angular & Your Architecture angular.module('MyApplication', [ 'ngCookies', 'ngResource', 'ngSanitize', 'ui.router', 'stormpath', 'stormpath.templates' ])
  • 22. Client-Side: UI Router Integration angular.module('MyApplication') .config(function ($urlRouterProvider, $locationProvider) { $urlRouterProvider.otherwise('/'); $locationProvider.html5Mode(true); }) .run(function($stormpath){ $stormpath.uiRouter({ loginState: 'login', defaultPostLoginState: 'main' }); });
  • 23. Client-Side: Built-in Form Directives <div sp-login-form></div>
  • 24. Client-Side: Built-in Form Directives <div sp-registration-form post-login-state="main”></div>
  • 25. Client-Side: Auth Directives Classic Use Case: Menu bar changes when logged in Logged In: Not Logged In:
  • 26. Client-Side: Auth Directives <li if-not-user> <a ui-sref="login">Login</a> </li> <li if-user> <a ui-sref="main" sp-logout>Logout</a> </li> “If User” and “If Not User”
  • 27. Client-Side: View Authentication angular.module('MyApplication') .config(function ($stateProvider) { $stateProvider .state('profile', { url: '/profile', templateUrl: 'app/profile/profile.html', controller: 'ProfileCtrl', sp: { authenticate: true, } }); });
  • 28. Client-Side: View Authorization angular.module('MyApplication') .config(function ($stateProvider) { $stateProvider .state('profile', { url: '/profile', templateUrl: 'app/profile/profile.html', controller: 'ProfileCtrl', sp: { authorize: { group: ‘admins’ } } }); });
  • 29. Client-Side: Behind the Scenes.. • On login: Stormpath Express SDK sends a JWT to Angular, stored in a secure cookie • Browser automatically supplies JWT cookie on all requets • /me route is served by SDK, so that Angular can know context about current user
  • 30. Recap.. • Stormpath SDK on your server and in your SPA • JWTs are used instead of sessions • Angular SDK provides directives for forms and authentication state • Angular SDK will work with any backend • User data is stored and secured behind the Stormpath API
  • 31. Stormpath for Authentication & User Management Stormpath can handle authentication and authorization for your API, SPA or mobile app, as well as a range of advanced user features • Single Sign-On Across Your Apps • API Authentication & Key Management • Token Based Authentication • Oauth Workflows • JWTs Implementations in your Library of choice: https://docs.stormpath.com/home/
  • 32. Get started with your free Stormpath developer account! https://api.stormpath.com/register Questions? [email protected]