AWSがソーシャルログイン可能に。つまりAWSが事実上のMBaaSになった

http://aws.typepad.com/aws_japan/2013/05/aws-iam-now-supports-amazon-facebook-and-google-identity-federation.html

ほんとは言いたいことは表題だけで終了なんですが、とりあえず3行程度でまとめ。

  • AWSサービス群のAPIへアクセスするためのトークンを発行するサービス(STS)が、外部のアイデンティティプロバイダとの連携を開始した(FacebookGoogleなど)
  • つまり、エンドユーザの認証のための中間サーバ(EC2も含め)を用意しなくても、AWSサービスを直接利用するモバイルアプリが作れるようになった(例:FacebookIDでログインし、S3上に割り当てられたユーザ専用のエリアに写真やファイルをアップして共有するアプリなど)。
  • これって、いわゆるMobile Backend as a Service (MBaaS) じゃないの?

S3の読み書きが直でできるというだけでMBaaSというにはちょっとまだまだかも知れないですが、とりあえずエンドユーザレベルでアクセス制御が可能なクラウドストレージが提供されるようになったということは、重要な一歩だと思います。あとはDynamoDBをちゃんと使えるようになるとかなりパワフルになりそうですが、現在STS自体はDynamoDBへのアクセスもサポートしているものの、今のところレコードレベルでアクセス制御ができるわけではなさそうです。

なお、今回は発表されたスペックだけ見て記事書いてます。コード書いて動かしてるわけじゃないです。なので実際やってみたらそんないい話じゃなかったよ、ということもあるかもしれません。暇になったらサンプルでも動かしてみようかなくらいですが、いずれ誰かがやってくれるならばまあそれでいいです。

しかしクライアント側のアプリで得たtokenをサーバサイドに渡して認証、ってのを推し進めてるのは、若干気になる所ではあります。OpenID Connectの場合はID Tokenの中にaud(audience:発行先)の情報が指定されているので幾分マシですが、そもそもクラウド上のサービス(AWS)とユーザの持つデバイス内のアプリが同一のaudienceとして処理されるのに違和感を感じることもありそうです。

一応AWS iOS SDKに含まれていたSecurity Token Serviceのヘッダファイルには、webIdentiyTokenとしてOpenID ConnectのID Tokenも指定できるようなコメントが書いてありました。前述のように、実際SDKを触ってみたわけじゃないのでこれが動くかどうかはわかりませんけど。

https://github.com/aws/aws-sdk-ios/blob/master/src/include/STS/SecurityTokenServiceAssumeRoleWithWebIdentityRequest.h?source=cc#L72-L96