Facebokkの認証のWeb Identity Federationを使ってみる
- IAMのページの右下にあるWeb Identity Federation Playgroundを確認すると以降の全体の流れが把握できる
- Roleを作る
- Select Role TypeではRole for Identity Provider AccessのGrant access to web identity providersを指定する。
- Role作成後に付与したいPermissionのポリシーをattachする
- Role ARNをメモしておく
- FacebookDevelopers
- サイトをホスティングするサイトのURL登録が必要なのであらかじめS3の任意のバケットでStaticWebSiteHostingの設定を有効化してURLをメモしておく
- ウェブサイト向けのFacebookアプリを作る申請をブラウザから行う。サイトのURLは上記S3のURLとする
- Facebook Login for the Web with the JavaScript SDK
- Quickstatrtの内容をコピペしてyour-app-idの部分を先ほど作成したアプリのIDに変更する
- 作成したhtmlをS3にアップロードする
- アクセスするとFacebookのログインボタンが確認できる
- ログイン後、ChromeなどのDeveloperToolsをでJSONの内容を確認するとaccessTokenの返却が確認できる
- AssumeRoleWithWebIdentity
- accessToken,Roleなどを指定し、アクセスする
- access_key_id,secret_access_key,session_tokenが取得できる
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)