Summer'14 Update - What's new in Force.com Canvas -

1,096 views
994 views

Published on

Summer'14 Update - What's new in Force.com Canvas -

Published in: Technology

Summer'14 Update - What's new in Force.com Canvas -

  1. 1. Summer’14 Update - What’s new in Force.com Canvas - 2014/07/15 Shinichi Tomita Mashmatrix, Inc. @stomita
  2. 2. What’s new in Force.com Canvas • <apex:canvasApp> へentityFields の追加 • SDK オブジェクトおよび項目の変更 • モバイルデバイスの向き変更イベントのハンドリング • ページレイアウト/モバイルカード内に埋め込み可能に • S1のナビゲーションメニューでカスタムアイコン指定可能に • Signed Requestをオンデマンドに要求可能に • Signed Requestを利用するアプリにユーザ承認を必要とするよう設定可能 • SAMLでのシングルサインオン • Signed Requestのコンテキストのカスタマイズ
 (カスタムのアプリケーションライフサイクル)
  3. 3. ページレイアウト内への Canvas埋め込み • 縦サイズ伸縮(従来のVFページ埋め込みでは不可)
  4. 4. <apex:canvasApp> の entityFields 属性 <apex:canvasApp applicationName="MyApp" entityFields="Phone,Fax,BillingCity" containerId="canvasAppDiv"/>
  5. 5. Signed Req.に含まれる
 Context情報のカスタマイズ • User/Organization/Recordの情報をコンテキストから 除外設定可能 • entityFieldsをダイナミックに設定可能 • Apexで取得した追加の情報をパラメータに設定可能
  6. 6. Signed Req.のオンデマンド要求 • 利用シーン! - 通常:OAuthトークンがExpireした時? - アプリが「ユーザが自己承認可能」に設定してある場合 • Sfdc.canvas.client.refreshSignedRequest()! - フレーム間通信でSigned Request(以下SR)を親フレーム(Salesforce) から取得。JSのコールバックに返される - ユーザ承認されてない場合、OAuthトークンなどはSR内に含まれない • Sfdc.canvas.client.repost()! - 画面全体が再描画される(フレーム再読み込み)
  7. 7. 考察:
 オンデマンドSigned Req.は検証必要? • 通常、Canvasアプリでは、受け取ったSRがちゃんとそのアプリ向けに発行 されたものかどうか、サーバサイドでの検証が必要 • 悪意のあるサイトがCanvasをIFrameとして読み込んだら?Signed Request情報を自作して送りつけてきたら?(なりすまし/クリック ジャック) • しかしJSからオンデマンドで取得したSRについて、逐一サーバに渡して検 証することはたぶん想定されていない?(少なくともそうしろとは書かれ てない) • Canvas SDK内では一応 PostMessage時にOriginチェックは行われているので 安全に見えるのだけど… • Canvasアプリの性質にもよるが、できればサーバで署名検証、または最低 でも渡ってきたSR内のclient.targetOriginのチェックをした方がいいかも
  8. 8. おまけ: 
 Force.com Canvas Debugger • Signed Requestの中身を見る Canvasアプリ • https://sfdc-canvas- debugger.herokuapp.com/canvas • SRの署名検証 してません! • なので上記URLを登録すれば勝手 に接続アプリとして利用可能で す
  9. 9. Thanks.

×