-------OAuth2-------

What: Authorization provider

Why: 1. Scalable  2. Separate of concerns  => 3. Cloud compatible: 12 factor apps + serverless

How: http://sivatechlab.com/secure-rest-api-using-spring-security-oauth2/

Bundled solution: OpenID Connect

Cloud solution: AWS Cognito

-------Cognito-------

AWS cognito ads:
https://www.youtube.com/watch?v=abTy-Yyo6lI

Creating cognito user pool + federation agency: https://console.aws.amazon.com/cognito/code/?region=us-east-1&pool=us-east-1:7fa2bb23-5485-43ae-bd40-5f23a523c774&response=%7B%22authRole%22%3A%22arn%3Aaws%3Aiam%3A%3A113688755533%3Arole%2FCognito_googleclientAuth_Role%22%2C%22unauthRole%22%3A%22arn%3Aaws%3Aiam%3A%3A113688755533%3Arole%2FCognito_googleclientUnauth_Role%22%7D

Developer guide: http://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/getting-started-browser.html

---------Demo---------
Protected S3 resource will be accessible after authentication + authorization

http://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/getting-started-browser.html#getting-started-browser-create-bucket

Explain steps: 1. Only give index.html public access. 2. Access other files has to go through JavaScript. (Click file link will fail) 3.Demo list other users object will fail

----------vars------------
S3 bucket name: cognito-demo-shawn
  bucket region: us-east-1
    bucket URL: https://s3.amazonaws.com/cognito-demo-shawn/index.html
    # note: don't use non-https URLs (eg. S3 website host URL http://cognito-demo-shawn.s3-website-us-east-1.amazonaws.com/)
Facebook app ID: 149302952278784
IAM policy name: facebook-auth-per-object
  IAM role name: facebook-auth-per-object-user
    role ARN: arn:aws:iam::113688755533:role/facebook-auth-per-object-user


## Safety explained:

Facebook loads in separate browser tab, credential is safe
Popup window Oauth2 is only safe if user verifies the URL. Browser treat cookies from different domain as totally separated context scope
Should use https to access index.html
