Upgrade to Pro — share decks privately, control downloads, hide ads and more …

SORACOM Endorseによる SIMカードとAWSの認証連携

takipone
January 27, 2016

SORACOM Endorseによる SIMカードとAWSの認証連携

SORACOM Conference 2016 “Connected” T4セッション ゲストスピーカー

takipone

January 27, 2016
Tweet

More Decks by takipone

Other Decks in Technology

Transcript

  1. About me •  ⼤瀧隆太 Ryuta Otaki ID : @takipone • 

    おしごと プリセールス/エンジニア @クラスメソッド •  好きなSORACOMサービス SORACOM Beam classmethod.jp 2
  2. 今回構築したところ SORACOMが提供 SIMカードとAWSの認証連携 classmethod.jp 6  Endorse 公開鍵 in S3 AWS

    API Endorse SORACOM API Amazon API Gateway AWS Lambda AWS IAM SORACOM Air SIM トークンを リクエスト、取得 トークンを渡して AWS APIキーを取得 AWS APIキーで APIをコール 1 2 3
  3. 今回構築したところ SORACOMが提供 2. トークン検証とAWS⼀時キー発⾏ classmethod.jp 9  Endorse 公開鍵 in S3

    SORACOM API API Gateway (ディスパッチャ) AWS Lambda (ロジック) AWS IAM (APIキー発⾏者) リクエスト : JWT署名済トークン レスポンス : AWS APIキー Endorse a. JWT公開鍵を 取得して トークンを検証 b. トークンに 含まれるIMSI をリスト照会 c. APIキー発⾏
  4. 2. トークン検証とAWS⼀時キー発⾏ classmethod.jp 10 3: var jwt = require('jsonwebtoken'); :

    17: // トークンをデコード 18: var decoded = jwt.decode(event.token, {complete: true}); 19: // デコードしたペイロードからIMSIを取得 20: var imsi = decoded.payload['soracom-endorse-claim'].imsi; 21: // デコードしたヘッダに含まれるキー名からキーストアのURLを⽣成し、取得 22: request(sora_keystore + decoded.header.kid, function (err, response, body){ 23: var pubkey = body; 24: try { 25: // トークンの検証が成功すればtryブロックを継続 26: jwt.verify(event.token, pubkey);