#前提
railsをベースにアプリケーションを作成しています。
問題が発生したのは、アップロードした画像の表示に関するセキュリティに関する箇所で、
画像をアップロードした本人と同じグループ(アプリケーション上で作成されたグループ)のみアクセスできるようにしたいという課題になります。
有識者の方、どんなことでもかまいませんので、、どうかご教示いただけないでしょうか?
#アプリケーションのイメージ
・ユーザーは日記を投稿可能
・日記には画像添付可能
・日記はユーザーが設定した特定グループのみに公開される
といったかんじです。
このとき日記に添付した画像URLを外部から直接叩いても表示不可なようにしたいです。
#ざっとの構成
アプリケーションの構成は以下のような状況です
- インフラ・・・heroku, AWS S3(ファイルサーバーとして)
- バックエンド・・・rails4.0(おもにAPIサーバー)
- フロントエンド・・・angular(PC Web), angular + cordova(SPアプリ)
#現在の実装と問題点
S3との連携にはrailsのcarrierwave(とfog)プラグインを使用していて
アップロード時
- ブラウザからherokuサーバーに対してアップロード
- herokuサーバーからcarrierwaveを利用して、S3にアップロード
表示時
- ブラウザからherokuサーバーに対してAPIを叩いて日記データ取得
- herokuサーバーはcarrierwaveプラグインにより、S3の認証情報つきのURLを作成。日記データにセット
60秒間のアクセスが可能というもの。
carrier_waveのconfig.fog_publicおよびconfig.fog_authenticated_url_expiration設定
- 取得したデータ(json)をキャッシュしとく
- 日記データを描画するタイミングで、imgタグやbackground-urlにセット。ブラウザからS3にアクセスして画像データ取得
といったことをしています。
なのですが、angularの特性上、1.で取得したデータをキャッシュしておき、4.で表示するタイミングはユーザーアクションに依存するというスタイルになっているため、必ず60秒間以内に表示できるとは限らないという状況です
やりたいこと
上記のような問題が発生しているので、認証方式を
- フロントからherokuサーバーに対してAPIで日記データ取得
- 取得したデータ(json)をキャッシュしとく
- angularでimgタグやbackground-urlにセット
- ブラウザから画像サーバーにアクセスして画像データ取得
- 画像サーバー内で、ログインユーザーおよびグループ情報から権限判定
といったスタイルにしたいです。
そのようにしたいのですが、インフラ関連の知識が薄くてどのような構成にすればよいのか?どこから着手すれば良いのか?まったく見通しがたっていないという状況です。
ざっとの方針だけでも良いのでご教示いただけないでしょうか?
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。