狠狠撸

狠狠撸Share a Scribd company logo
Summer’14 Update	

- What’s new in Force.com Canvas -
2014/07/15	

Shinichi Tomita	

Mashmatrix, Inc.	

@stomita
What’s new in
Force.com Canvas
? <apex:canvasApp> へentityFields の追加	

? SDK オブジェクトおよび項目の変更	

? モバイルデバイスの向き変更イベントのハンドリング	

? ページレイアウト/モバイルカード内に埋め込み可能に	

? S1のナビゲーションメニューでカスタムアイコン指定可能に	

? Signed Requestをオンデマンドに要求可能に	

? Signed Requestを利用するアプリにユーザ承認を必要とするよう設定可能	

? SAMLでのシングルサインオン	

? Signed Requestのコンテキストのカスタマイズ?
(カスタムのアプリケーションライフサイクル)
ページレイアウト内への	

Canvas埋め込み
? 縦サイズ伸縮(従来のVFページ埋め込みでは不可)
<apex:canvasApp> の
entityFields 属性
<apex:canvasApp applicationName="MyApp"
entityFields="Phone,Fax,BillingCity"	

containerId="canvasAppDiv"/>
Signed Req.に含まれる?
Context情報のカスタマイズ
? User/Organization/Recordの情報をコンテキストから
除外設定可能	

? entityFieldsをダイナミックに設定可能	

? Apexで取得した追加の情報をパラメータに設定可能
Signed Req.のオンデマンド要求
? 利用シーン!
- 通常:OAuthトークンがExpireした時?	

- アプリが「ユーザが自己承認可能」に設定してある場合	

? Sfdc.canvas.client.refreshSignedRequest()!
- フレーム間通信でSigned Request(以下SR)を親フレーム(Salesforce)
から取得。JSのコールバックに返される	

- ユーザ承認されてない場合、OAuthトークンなどはSR内に含まれない	

? Sfdc.canvas.client.repost()!
- 画面全体が再描画される(フレーム再読み込み)
考察:?
オンデマンドSigned Req.は検証必要?
? 通常、Canvasアプリでは、受け取ったSRがちゃんとそのアプリ向けに発行
されたものかどうか、サーバサイドでの検証が必要	

? 悪意のあるサイトがCanvasをIFrameとして読み込んだら?Signed
Request情報を自作して送りつけてきたら?(なりすまし/クリック
ジャック)	

? しかしJSからオンデマンドで取得したSRについて、逐一サーバに渡して検
証することはたぶん想定されていない?(少なくともそうしろとは書かれ
てない)	

? Canvas SDK内では一応 PostMessage時にOriginチェックは行われているので
安全に見えるのだけど…	

? Canvasアプリの性質にもよるが、できればサーバで署名検証、または最低
でも渡ってきたSR内のclient.targetOriginのチェックをした方がいいかも
おまけ: ?
Force.com Canvas Debugger
? Signed Requestの中身を見る
Canvasアプリ	

? https://sfdc-canvas-
debugger.herokuapp.com/canvas	

? SRの署名検証 してません!	

? なので上記URLを登録すれば勝手
に接続アプリとして利用可能で
す
Thanks.

More Related Content

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