Skip to content

Instantly share code, notes, and snippets.

@toshihirock
Last active August 29, 2015 14:19
Show Gist options
  • Save toshihirock/3157507d8838eea2e2ec to your computer and use it in GitHub Desktop.
Save toshihirock/3157507d8838eea2e2ec to your computer and use it in GitHub Desktop.

Facebokkの認証のWeb Identity Federationを使ってみる

流れを把握する

  • IAMのページの右下にあるWeb Identity Federation Playgroundを確認すると以降の全体の流れが把握できる

Web Identity Federation用のIAMROleを作成

  • Roleを作る
  • Select Role TypeではRole for Identity Provider AccessGrant access to web identity providersを指定する。
  • Role作成後に付与したいPermissionのポリシーをattachする
  • Role ARNをメモしておく

Facebookのアプリを作る

  • FacebookDevelopers
  • サイトをホスティングするサイトのURL登録が必要なのであらかじめS3の任意のバケットでStaticWebSiteHostingの設定を有効化してURLをメモしておく
  • ウェブサイト向けのFacebookアプリを作る申請をブラウザから行う。サイトのURLは上記S3のURLとする

FacebookのJavaScriptSDKを使ってログインするHTMLの準備

  • Facebook Login for the Web with the JavaScript SDK
  • Quickstatrtの内容をコピペしてyour-app-idの部分を先ほど作成したアプリのIDに変更する
  • 作成したhtmlをS3にアップロードする
  • アクセスするとFacebookのログインボタンが確認できる
  • ログイン後、ChromeなどのDeveloperToolsをでJSONの内容を確認するとaccessTokenの返却が確認できる

AssumeRoleWithWebIdentity

  • AssumeRoleWithWebIdentity
  • accessToken,Roleなどを指定し、アクセスする
  • access_key_id,secret_access_key,session_tokenが取得できる

Rubyでアクセスする

gem install aws-sdk-core

以下のようなコードを作成して確認。

require "aws-sdk-core"

ACCESS_KEY_ID='hoge'
SECRET_ACCESS_KEY='fuga'
SESSION_TOKEN='poyo'

Aws.config.update({
  region: 'ap-northeast-1',
  credentials: Aws::Credentials.new(
    ACCESS_KEY_ID,
    SECRET_ACCESS_KEY,
    SESSION_TOKEN
  )
})
s3 = Aws::S3::Client.new

resp = s3.list_buckets
puts resp.buckets.map(&:name)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment