SlideShare a Scribd company logo
SecureSocial
Authentication Module for Play!
              Jorge Aliss
               @jaliss



           Sponsored by
Agenda
Overview
Main concepts: Identity Providers, Identity, UserService
Installation
Configuration
Protecting Actions
UsernamePassword provider
Password rules and hashing algorithms
Views customization
Internationalization
Extending SecureSocial
Overview
What does it do?
Why did I do it?
11/11/2011: First release (Play 1)
06/05/2012: Play 2 version
Demo
Identity Providers
A provider implements the logic required to support an
               authentication scheme.
          OAuth 1: Twitter, LinkedIn
          OAuth 2: Facebook, Google, GitHub
          OpenID (coming soon)
          Username and Password
          Your own provider
Identity
Represents a user in a Provider
Providers return an instance of this trait upon successful
authentication
Modeled with a trait in Scala and an interface on the Java API

 tatIett {
  ri dniy
   dfi:UeI
    e d srd
   dffrtae Srn
    e isNm: tig
   dflsNm:Srn
    e atae tig
   dfflNm:Srn
    e ulae tig
   dfeal Oto[tig
    e mi: pinSrn]
   dfaaaUl Oto[tig
    e vtrr: pinSrn]
   dfatMto:AtetctoMto
    e uhehd uhniainehd
   dfouhIf:Oto[At1no
    e At1no pinOuhIf]
   dfouhIf:Oto[At2no
    e At2no pinOuhIf]
   dfpswrIf:Oto[asodno
    e asodno pinPswrIf]
 }
UserService
Provides a way to persist/find Identities from a backing store
No imposed persistence mechanism. Developer is free to
use anything
Any class implementing Identity can be returned: this allows
you to return your own model class

 tatUeSrie{
  ri srevc
   dffn(d UeI)Oto[dniy
    e idi: srd:pinIett]
   dffnBEalnPoie(mi:Srn,poieI:Srn)Oto[dni
    e idymiAdrvdreal tig rvdrd tig:pinIett
 y]
   dfsv(sr Iett)
    e aeue: dniy
   / temtosta hnl tkn aeue
    / h ehd ht ade oes r sd
   / i sg u adrstpswr rqet
    / n in p n ee asod euss
   dfsv(oe:Tkn
    e aetkn oe)
   dffnTkntkn Srn) Oto[oe]
    e idoe(oe: tig: pinTkn
   dfdltTknui:Srn)
    e eeeoe(ud tig
   dfdltEprdoes)
    e eeexieTkn(
 }
Installation
      Available as a downloadable dependency
      Stable versions and master snapshots

ojc Apiainul etnsBid{
 bet plctoBid xed ul
   vlapae
    a pNm    ="yp"
               MAp
   vlapeso
    a pVrin  ="."
               10

   vlapeednis=Sq
    a pDpnece    e(
       "eueoil %"eueoil291 %".."
        scrsca"  scrsca_.."  207
   )
   vlmi =PaPoetapae apeso,apeednis miLn =S
    a an    lyrjc(pNm, pVrin pDpnece, anag C
AA.etns
 L)stig(
     rsles+ Rsle.r(ScrSca Rpstr" ul"tp/scrs
      eovr = eovrul"eueoil eoioy, r(ht:/eue
oilw/eoioyrlae/)(eovriytlPten)
 ca.srpstr/eess")Rsle.vSyeatrs
   )
}
Configuration
Settings go in a securesocial section of your conf file
Global settings: onLoginGoto, onLogoutoTo, ssl

   scrsca {
    eueoil
      oLgnoo/
       noiGT=
      oLguGT=lgn
       nootoo/oi
      slfle
       s=as
   }
Configuration
Username Password Provider

ueps {
 sras
  wtUeNmSpotfle
   ihsraeupr=as
  snWloemi=re
   edecmEaltu
  ealGaaaSpottu
   nbervtrupr=re
  tknuain6
   oeDrto=0
  tkneeenevl5
   oeDltItra=
  ealTkno=re
   nbeoeJbtu
  hse=cyt
   ahrbrp
  mnmmasodegh8
   iiuPswrLnt=
}
Configuration
       OAuth 1 and OAuth 2 based providers

titr{
 wte
   rqetoeUl"tp:/wte.o/at/eus_oe"
    eusTknr=hts/titrcmouhrqettkn
   acsTknr=hts/titrcmouhacs_oe"
    cesoeUl"tp:/wte.o/at/cestkn
   atoiainr=hts/titrcmouhatetct"
    uhrztoUl"tp:/wte.o/at/uhniae
   cnueKyyu_osmrky
    osmre=orcnue_e
   cnueSce=orcnue_ert
    osmrertyu_osmrsce
}

fcbo {
 aeok
   atoiainr=hts/gahfcbo.o/at/uhrz"
    uhrztoUl"tp:/rp.aeokcmouhatoie
   acsTknr=hts/gahfcbo.o/at/cestkn
    cesoeUl"tp:/rp.aeokcmouhacs_oe"
   cinI=orcin_d
    letdyu_leti
   cinSce=orcin_ert
    letertyu_letsce
   soeeal
    cp=mi
}
Protecting Actions
SecuredAction: intercepts requests and redirects them to a
login page if the user is not authenticated (returns
unauthorized error for ajax calls)
Authorization: SecuredActions can receive an Authorization
instance that checks if an authenticated user is authorized to
execute it. Renders an error page (returns forbidden for ajax
calls)
SecuredAction
    Add the SecureSocial trait to your controllers

dfmAto =Scrdcin{ipii rqet=
 e ycin   eueAto  mlct eus >
   O(iw.tlidxrqetue)
    kveshm.ne(eus.sr)
}

dfmAaCl =Scrdcintu){ipii rqet=
 e yjxal   eueAto(re   mlct eus >
   O(sntJo(a(msae - "el").sJO)
    kJo.osnMp"esg" > hlo))a(SN
}
Authorization
To add authorization logic to an action you need to implement
                   the Authorization trait.

   cs casWtRl(oe Rl)etnsAtoiain{
    ae ls ihoerl: oe xed uhrzto
      dfiAtoie(dniy Iett) Boen={
       e suhrzdiett: dniy: ola
        iett mth{
         dniy ac
          cs ue:Ue = ue.aRl(oe
           ae sr sr > srhsoerl)
          cs _=
           ae   >
            Lge.ro(DdntgtaSsinsrojc"
             ogrerr"i o e  esoUe bet)
            fle
             as
        }
      }
   }

   dfmAto =Scrdcin WtRl(di)){ipii rqet=
    e ycin   eueAto( ihoeAmn  mlct eus >
      O(iw.tlidxrqetue)
       kveshm.ne(eus.sr)
   }
UsernamePassword
            Provider
Enforces flows that prevent leaking information in the
Signup, Login and Password recovery flows
Password change functionality
Enforces password strength and hashing
Password Validator
Used to enforce password strength
DefaultPasswordValidator: checks length specified in settings
file
To customize, implement the PasswordValidator and register
it in the play.plugins file

   tatPswrVldtretnsPui {
    ri asodaiao xed lgn
     dfiVldpswr:Srn) Boen
      e sai(asod tig: ola
     dferresg:Srn
      e roMsae tig
   }
Password Hasher
Built in (and recommended) is based on Bcrypt
Several can be configured, allowing easy migration to new
algorithms as needed
PasswordInfo: stores the hashed password, an optional salt
and the hasher id
Passwords are hashed with the 'default' hasher

 tatPswrHse etnsPui wt Rgsrbe{
  ri asodahr xed lgn ih eital
   dfhs(liPswr:Srn) PswrIf
    e ahpanasod tig: asodno
   dfmthspswrIf:PswrIf,splePswr:Srn) Boen
    e ace(asodno asodno upidasod tig: ola
 }
Views Customization
Built in templates use Twitter Bootstrap
TemplatesPlugin: used to render views/emails
To customize: change css or implement and register it
instead of the default one

 dfgtoiPg[]ipii rqet RqetA,
  e eLgnaeA(mlct eus: eus[]
           fr:Fr[Srn,Srn),
            om om(tig tig]
           mg Oto[tig =Nn) Hm
            s: pinSrn]  oe: tl

 dfgtinpmi(oe:Srn)ipii rqet Rqetedr:Srn
  e eSgUEaltkn tig(mlct eus: eusHae) tig


 dfgtoiPg[]ipii rqet RqetA,
  e eLgnaeA(mlct eus: eus[]
            fr:Fr[Srn,Srn),
             om om(tig tig]
            mg Oto[tig =Nn) Hm =
             s: pinSrn] oe: tl
 {
   scrsca.iw.tllgnfr,mg
    eueoilveshm.oi(om s)
 }

 dfgtinpmi(oe:Srn)ipii rqet Rqetedr:Srn ={
  e eSgUEaltkn tig(mlct eus: eusHae) tig
    scrsca.iw.tlmissgUEaltkn.oy
     eueoilveshm.al.inpmi(oe)bd
 }
Internationalization
Built in messages are extracted
To customize: copy the messages from the sources into your
messages file and change as needed

 scrsca.oi.il=oi
  eueoillgntteLgn
 scrsca.oi.eehr
  eueoillgnhr=ee
 scrsca.oi.naiCeetasIvldCeetas
  eueoillgnivldrdnil=nai rdnil
 scrsca.oi.ogtasodDdyufre yu pswr?
  eueoillgnfroPswr=i o ogt or asod
Creating an Identity
          Provider
asrc casIettPoie(plcto:Apiain
 btat ls dniyrvdrapiain plcto)
    etnsPui wt Rgsrbe
     xed lgn ih eital
{
  .
  .

 dfdAt[])ipii rqet RqetA)Ete[eut ScaUe]
  e ouhA((mlct eus: eus[]:ihrRsl, oilsr
 dfflPoieue:ScaUe)ScaUe
  e ilrfl(sr oilsr:oilsr

 .
 .
}
What's next
OpenID support
More providers (eg:Foursquare, Wordpress, Yahoo).
Account linking support
Main Sponsor

  Previous sponsor
Q&A
Links
Project site: http://www.securesocial.ws
GitHub: https://github.com/jaliss/securesocial
Thank you
  Scala BASE

More Related Content

What's hot (20)

PPTX
JFugue, Music, and the Future of Java [JavaOne 2016, CON1851]
David Koelle
 
PDF
The Ring programming language version 1.10 book - Part 92 of 212
Mahmoud Samir Fayed
 
PDF
The Ring programming language version 1.7 book - Part 56 of 196
Mahmoud Samir Fayed
 
PDF
[Webinar] An Hour with the CTO: All About APIs and the Nuxeo Platform
Nuxeo
 
PDF
Offensive PowerShell Cheat Sheet
Rahmat Nurfauzi
 
PDF
The Ring programming language version 1.4 book - Part 15 of 30
Mahmoud Samir Fayed
 
PDF
Real Time Web with Node
Tim Caswell
 
PDF
The ABCs of OTP
Jesse Anderson
 
PDF
Node Powered Mobile
Tim Caswell
 
PDF
The Ring programming language version 1.3 book - Part 42 of 88
Mahmoud Samir Fayed
 
PPTX
Building an Ethereum Wallet using Hashicorp Vault
Jeff Ploughman
 
PPTX
Intro to Redis
Boulder Java User's Group
 
PDF
The Ring programming language version 1.5.3 book - Part 62 of 184
Mahmoud Samir Fayed
 
PDF
The Ring programming language version 1.5.4 book - Part 51 of 185
Mahmoud Samir Fayed
 
PPT
GeeCON 2013 - EJB application guided by tests
Jakub Marchwicki
 
PDF
root-ksk-2010
Alain Aina
 
PDF
The Ring programming language version 1.5.2 book - Part 51 of 181
Mahmoud Samir Fayed
 
PDF
Asynchronous java script
Ron Martin
 
PDF
The Ring programming language version 1.6 book - Part 54 of 189
Mahmoud Samir Fayed
 
PDF
gemdiff
teeparham
 
JFugue, Music, and the Future of Java [JavaOne 2016, CON1851]
David Koelle
 
The Ring programming language version 1.10 book - Part 92 of 212
Mahmoud Samir Fayed
 
The Ring programming language version 1.7 book - Part 56 of 196
Mahmoud Samir Fayed
 
[Webinar] An Hour with the CTO: All About APIs and the Nuxeo Platform
Nuxeo
 
Offensive PowerShell Cheat Sheet
Rahmat Nurfauzi
 
The Ring programming language version 1.4 book - Part 15 of 30
Mahmoud Samir Fayed
 
Real Time Web with Node
Tim Caswell
 
The ABCs of OTP
Jesse Anderson
 
Node Powered Mobile
Tim Caswell
 
The Ring programming language version 1.3 book - Part 42 of 88
Mahmoud Samir Fayed
 
Building an Ethereum Wallet using Hashicorp Vault
Jeff Ploughman
 
The Ring programming language version 1.5.3 book - Part 62 of 184
Mahmoud Samir Fayed
 
The Ring programming language version 1.5.4 book - Part 51 of 185
Mahmoud Samir Fayed
 
GeeCON 2013 - EJB application guided by tests
Jakub Marchwicki
 
root-ksk-2010
Alain Aina
 
The Ring programming language version 1.5.2 book - Part 51 of 181
Mahmoud Samir Fayed
 
Asynchronous java script
Ron Martin
 
The Ring programming language version 1.6 book - Part 54 of 189
Mahmoud Samir Fayed
 
gemdiff
teeparham
 

Similar to SecureSocial - Authentication for Play Framework (20)

PDF
JavaFX, because you're worth it
Thierry Wasylczenko
 
PDF
Clojurescript up and running
Timo Sulg
 
PDF
Building modern web apps with html5, javascript, and java
Alexander Gyoshev
 
PDF
2013-02-21 - .NET UG Rhein-Neckar: JavaScript Best Practices
Johannes Hoppe
 
PDF
Creating windows store java script apps
Eugene Zharkov
 
PDF
nescala 2013
Hung Lin
 
PDF
Refactoring to symfony components
Michael Peacock
 
PDF
JavaScript Design Patterns
Derek Brown
 
PDF
Arquillian Extensions
Michał Matłoka
 
PDF
Arquillian - extensions which you have to take with you to a deserted island
SoftwareMill
 
PDF
Beginner workshop to angularjs presentation at Google
Ari Lerner
 
PDF
Theme Development and Customization
Aniket Pant
 
PDF
Drupal 8 in action, the route to the method
juanolalla
 
PDF
Starting out with Ember.js
Anirudh Shivanand
 
PPTX
Oracle RDBMS Workshop (Part1)
Taras Lyuklyanchuk
 
PDF
Making Mongo realtime - oplog tailing in Meteor
yaliceme
 
PDF
How to create a 3.2 billion dollar business in 20 minutes: combining AngularJ...
Ari Lerner
 
PDF
An Introduction to CSS Preprocessors
Miloš Sutanovac
 
PDF
Nginx Scripting - Extending Nginx Functionalities with Lua
Tony Fabeen
 
PDF
Devinsampa nginx-scripting
Tony Fabeen
 
JavaFX, because you're worth it
Thierry Wasylczenko
 
Clojurescript up and running
Timo Sulg
 
Building modern web apps with html5, javascript, and java
Alexander Gyoshev
 
2013-02-21 - .NET UG Rhein-Neckar: JavaScript Best Practices
Johannes Hoppe
 
Creating windows store java script apps
Eugene Zharkov
 
nescala 2013
Hung Lin
 
Refactoring to symfony components
Michael Peacock
 
JavaScript Design Patterns
Derek Brown
 
Arquillian Extensions
Michał Matłoka
 
Arquillian - extensions which you have to take with you to a deserted island
SoftwareMill
 
Beginner workshop to angularjs presentation at Google
Ari Lerner
 
Theme Development and Customization
Aniket Pant
 
Drupal 8 in action, the route to the method
juanolalla
 
Starting out with Ember.js
Anirudh Shivanand
 
Oracle RDBMS Workshop (Part1)
Taras Lyuklyanchuk
 
Making Mongo realtime - oplog tailing in Meteor
yaliceme
 
How to create a 3.2 billion dollar business in 20 minutes: combining AngularJ...
Ari Lerner
 
An Introduction to CSS Preprocessors
Miloš Sutanovac
 
Nginx Scripting - Extending Nginx Functionalities with Lua
Tony Fabeen
 
Devinsampa nginx-scripting
Tony Fabeen
 
Ad

Recently uploaded (20)

PDF
How Current Advanced Cyber Threats Transform Business Operation
Eryk Budi Pratama
 
PDF
Bitcoin+ Escalando sin concesiones - Parte 1
Fernando Paredes García
 
PPTX
Extensions Framework (XaaS) - Enabling Orchestrate Anything
ShapeBlue
 
PPTX
Darren Mills The Migration Modernization Balancing Act: Navigating Risks and...
AWS Chicago
 
PDF
Novus Safe Lite- What is Novus Safe Lite.pdf
Novus Hi-Tech
 
PDF
Impact of IEEE Computer Society in Advancing Emerging Technologies including ...
Hironori Washizaki
 
PPTX
Building a Production-Ready Barts Health Secure Data Environment Tooling, Acc...
Barts Health
 
PDF
Log-Based Anomaly Detection: Enhancing System Reliability with Machine Learning
Mohammed BEKKOUCHE
 
PPTX
✨Unleashing Collaboration: Salesforce Channels & Community Power in Patna!✨
SanjeetMishra29
 
PDF
Meetup Kickoff & Welcome - Rohit Yadav, CSIUG Chairman
ShapeBlue
 
PPTX
UI5Con 2025 - Get to Know Your UI5 Tooling
Wouter Lemaire
 
PDF
2025-07-15 EMEA Volledig Inzicht Dutch Webinar
ThousandEyes
 
PPTX
The Yotta x CloudStack Advantage: Scalable, India-First Cloud
ShapeBlue
 
PDF
Apache CloudStack 201: Let's Design & Build an IaaS Cloud
ShapeBlue
 
PDF
Productivity Management Software | Workstatus
Lovely Baghel
 
PDF
SFWelly Summer 25 Release Highlights July 2025
Anna Loughnan Colquhoun
 
PDF
CloudStack GPU Integration - Rohit Yadav
ShapeBlue
 
PDF
GITLAB-CICD_For_Professionals_KodeKloud.pdf
deepaktyagi0048
 
PDF
Building Resilience with Digital Twins : Lessons from Korea
SANGHEE SHIN
 
PDF
HR agent at Mediq: Lessons learned on Agent Builder & Maestro by Tacstone Tec...
UiPathCommunity
 
How Current Advanced Cyber Threats Transform Business Operation
Eryk Budi Pratama
 
Bitcoin+ Escalando sin concesiones - Parte 1
Fernando Paredes García
 
Extensions Framework (XaaS) - Enabling Orchestrate Anything
ShapeBlue
 
Darren Mills The Migration Modernization Balancing Act: Navigating Risks and...
AWS Chicago
 
Novus Safe Lite- What is Novus Safe Lite.pdf
Novus Hi-Tech
 
Impact of IEEE Computer Society in Advancing Emerging Technologies including ...
Hironori Washizaki
 
Building a Production-Ready Barts Health Secure Data Environment Tooling, Acc...
Barts Health
 
Log-Based Anomaly Detection: Enhancing System Reliability with Machine Learning
Mohammed BEKKOUCHE
 
✨Unleashing Collaboration: Salesforce Channels & Community Power in Patna!✨
SanjeetMishra29
 
Meetup Kickoff & Welcome - Rohit Yadav, CSIUG Chairman
ShapeBlue
 
UI5Con 2025 - Get to Know Your UI5 Tooling
Wouter Lemaire
 
2025-07-15 EMEA Volledig Inzicht Dutch Webinar
ThousandEyes
 
The Yotta x CloudStack Advantage: Scalable, India-First Cloud
ShapeBlue
 
Apache CloudStack 201: Let's Design & Build an IaaS Cloud
ShapeBlue
 
Productivity Management Software | Workstatus
Lovely Baghel
 
SFWelly Summer 25 Release Highlights July 2025
Anna Loughnan Colquhoun
 
CloudStack GPU Integration - Rohit Yadav
ShapeBlue
 
GITLAB-CICD_For_Professionals_KodeKloud.pdf
deepaktyagi0048
 
Building Resilience with Digital Twins : Lessons from Korea
SANGHEE SHIN
 
HR agent at Mediq: Lessons learned on Agent Builder & Maestro by Tacstone Tec...
UiPathCommunity
 
Ad

SecureSocial - Authentication for Play Framework

  • 1. SecureSocial Authentication Module for Play! Jorge Aliss @jaliss Sponsored by
  • 2. Agenda Overview Main concepts: Identity Providers, Identity, UserService Installation Configuration Protecting Actions UsernamePassword provider Password rules and hashing algorithms Views customization Internationalization Extending SecureSocial
  • 3. Overview What does it do? Why did I do it? 11/11/2011: First release (Play 1) 06/05/2012: Play 2 version
  • 5. Identity Providers A provider implements the logic required to support an authentication scheme. OAuth 1: Twitter, LinkedIn OAuth 2: Facebook, Google, GitHub OpenID (coming soon) Username and Password Your own provider
  • 6. Identity Represents a user in a Provider Providers return an instance of this trait upon successful authentication Modeled with a trait in Scala and an interface on the Java API tatIett { ri dniy dfi:UeI e d srd dffrtae Srn e isNm: tig dflsNm:Srn e atae tig dfflNm:Srn e ulae tig dfeal Oto[tig e mi: pinSrn] dfaaaUl Oto[tig e vtrr: pinSrn] dfatMto:AtetctoMto e uhehd uhniainehd dfouhIf:Oto[At1no e At1no pinOuhIf] dfouhIf:Oto[At2no e At2no pinOuhIf] dfpswrIf:Oto[asodno e asodno pinPswrIf] }
  • 7. UserService Provides a way to persist/find Identities from a backing store No imposed persistence mechanism. Developer is free to use anything Any class implementing Identity can be returned: this allows you to return your own model class tatUeSrie{ ri srevc dffn(d UeI)Oto[dniy e idi: srd:pinIett] dffnBEalnPoie(mi:Srn,poieI:Srn)Oto[dni e idymiAdrvdreal tig rvdrd tig:pinIett y] dfsv(sr Iett) e aeue: dniy / temtosta hnl tkn aeue / h ehd ht ade oes r sd / i sg u adrstpswr rqet / n in p n ee asod euss dfsv(oe:Tkn e aetkn oe) dffnTkntkn Srn) Oto[oe] e idoe(oe: tig: pinTkn dfdltTknui:Srn) e eeeoe(ud tig dfdltEprdoes) e eeexieTkn( }
  • 8. Installation Available as a downloadable dependency Stable versions and master snapshots ojc Apiainul etnsBid{ bet plctoBid xed ul vlapae a pNm ="yp" MAp vlapeso a pVrin ="." 10 vlapeednis=Sq a pDpnece e( "eueoil %"eueoil291 %".." scrsca" scrsca_.." 207 ) vlmi =PaPoetapae apeso,apeednis miLn =S a an lyrjc(pNm, pVrin pDpnece, anag C AA.etns L)stig( rsles+ Rsle.r(ScrSca Rpstr" ul"tp/scrs eovr = eovrul"eueoil eoioy, r(ht:/eue oilw/eoioyrlae/)(eovriytlPten) ca.srpstr/eess")Rsle.vSyeatrs ) }
  • 9. Configuration Settings go in a securesocial section of your conf file Global settings: onLoginGoto, onLogoutoTo, ssl scrsca { eueoil oLgnoo/ noiGT= oLguGT=lgn nootoo/oi slfle s=as }
  • 10. Configuration Username Password Provider ueps { sras wtUeNmSpotfle ihsraeupr=as snWloemi=re edecmEaltu ealGaaaSpottu nbervtrupr=re tknuain6 oeDrto=0 tkneeenevl5 oeDltItra= ealTkno=re nbeoeJbtu hse=cyt ahrbrp mnmmasodegh8 iiuPswrLnt= }
  • 11. Configuration OAuth 1 and OAuth 2 based providers titr{ wte rqetoeUl"tp:/wte.o/at/eus_oe" eusTknr=hts/titrcmouhrqettkn acsTknr=hts/titrcmouhacs_oe" cesoeUl"tp:/wte.o/at/cestkn atoiainr=hts/titrcmouhatetct" uhrztoUl"tp:/wte.o/at/uhniae cnueKyyu_osmrky osmre=orcnue_e cnueSce=orcnue_ert osmrertyu_osmrsce } fcbo { aeok atoiainr=hts/gahfcbo.o/at/uhrz" uhrztoUl"tp:/rp.aeokcmouhatoie acsTknr=hts/gahfcbo.o/at/cestkn cesoeUl"tp:/rp.aeokcmouhacs_oe" cinI=orcin_d letdyu_leti cinSce=orcin_ert letertyu_letsce soeeal cp=mi }
  • 12. Protecting Actions SecuredAction: intercepts requests and redirects them to a login page if the user is not authenticated (returns unauthorized error for ajax calls) Authorization: SecuredActions can receive an Authorization instance that checks if an authenticated user is authorized to execute it. Renders an error page (returns forbidden for ajax calls)
  • 13. SecuredAction Add the SecureSocial trait to your controllers dfmAto =Scrdcin{ipii rqet= e ycin eueAto mlct eus > O(iw.tlidxrqetue) kveshm.ne(eus.sr) } dfmAaCl =Scrdcintu){ipii rqet= e yjxal eueAto(re mlct eus > O(sntJo(a(msae - "el").sJO) kJo.osnMp"esg" > hlo))a(SN }
  • 14. Authorization To add authorization logic to an action you need to implement the Authorization trait. cs casWtRl(oe Rl)etnsAtoiain{ ae ls ihoerl: oe xed uhrzto dfiAtoie(dniy Iett) Boen={ e suhrzdiett: dniy: ola iett mth{ dniy ac cs ue:Ue = ue.aRl(oe ae sr sr > srhsoerl) cs _= ae > Lge.ro(DdntgtaSsinsrojc" ogrerr"i o e esoUe bet) fle as } } } dfmAto =Scrdcin WtRl(di)){ipii rqet= e ycin eueAto( ihoeAmn mlct eus > O(iw.tlidxrqetue) kveshm.ne(eus.sr) }
  • 15. UsernamePassword Provider Enforces flows that prevent leaking information in the Signup, Login and Password recovery flows Password change functionality Enforces password strength and hashing
  • 16. Password Validator Used to enforce password strength DefaultPasswordValidator: checks length specified in settings file To customize, implement the PasswordValidator and register it in the play.plugins file tatPswrVldtretnsPui { ri asodaiao xed lgn dfiVldpswr:Srn) Boen e sai(asod tig: ola dferresg:Srn e roMsae tig }
  • 17. Password Hasher Built in (and recommended) is based on Bcrypt Several can be configured, allowing easy migration to new algorithms as needed PasswordInfo: stores the hashed password, an optional salt and the hasher id Passwords are hashed with the 'default' hasher tatPswrHse etnsPui wt Rgsrbe{ ri asodahr xed lgn ih eital dfhs(liPswr:Srn) PswrIf e ahpanasod tig: asodno dfmthspswrIf:PswrIf,splePswr:Srn) Boen e ace(asodno asodno upidasod tig: ola }
  • 18. Views Customization Built in templates use Twitter Bootstrap TemplatesPlugin: used to render views/emails To customize: change css or implement and register it instead of the default one dfgtoiPg[]ipii rqet RqetA, e eLgnaeA(mlct eus: eus[] fr:Fr[Srn,Srn), om om(tig tig] mg Oto[tig =Nn) Hm s: pinSrn] oe: tl dfgtinpmi(oe:Srn)ipii rqet Rqetedr:Srn e eSgUEaltkn tig(mlct eus: eusHae) tig dfgtoiPg[]ipii rqet RqetA, e eLgnaeA(mlct eus: eus[] fr:Fr[Srn,Srn), om om(tig tig] mg Oto[tig =Nn) Hm = s: pinSrn] oe: tl { scrsca.iw.tllgnfr,mg eueoilveshm.oi(om s) } dfgtinpmi(oe:Srn)ipii rqet Rqetedr:Srn ={ e eSgUEaltkn tig(mlct eus: eusHae) tig scrsca.iw.tlmissgUEaltkn.oy eueoilveshm.al.inpmi(oe)bd }
  • 19. Internationalization Built in messages are extracted To customize: copy the messages from the sources into your messages file and change as needed scrsca.oi.il=oi eueoillgntteLgn scrsca.oi.eehr eueoillgnhr=ee scrsca.oi.naiCeetasIvldCeetas eueoillgnivldrdnil=nai rdnil scrsca.oi.ogtasodDdyufre yu pswr? eueoillgnfroPswr=i o ogt or asod
  • 20. Creating an Identity Provider asrc casIettPoie(plcto:Apiain btat ls dniyrvdrapiain plcto) etnsPui wt Rgsrbe xed lgn ih eital { . . dfdAt[])ipii rqet RqetA)Ete[eut ScaUe] e ouhA((mlct eus: eus[]:ihrRsl, oilsr dfflPoieue:ScaUe)ScaUe e ilrfl(sr oilsr:oilsr . . }
  • 21. What's next OpenID support More providers (eg:Foursquare, Wordpress, Yahoo). Account linking support
  • 23. Q&A
  • 24. Links Project site: http://www.securesocial.ws GitHub: https://github.com/jaliss/securesocial