IFTTTとFirebaseの連携で認証を追加

IFTTTとFirebaseの連携で認証を追加

先日 PS4 をGoogle Home から操作できるように設定を行いました。

Google Homeでプレステ4を操作できるようにしてみた

 

しかし、Firebase のプロジェクトの読み書きが自由に行える状態のため、Webhook で実行している URL が第三者にバレてしまうと、誰でもアクセスできてしまいます。

セキュリティ的にも良くないので、ひとまず認証を追加しました。

今回追加した設定は firebase 的にはレガシーとなっていますが、何もセキュリティ対策が無いよりはあったほうが良いでしょう。

設定自体は数分で完了しました。

 

Firebase のシークレットを確認

  1. Firebase にアクセス
  2. [歯車]-[プロジェクトの設定] をクリック
    [歯車]-[プロジェクトの設定] をクリック
  3. 初めてアクセスすると利用規約が表示されるため [同意する] をクリック
    初めてアクセスすると利用規約が表示されるため [同意する] をクリック
  4. [サービスアカウント] タブをクリック
    [サービスアカウント] タブをクリック
  5. [データベースのシークレット] をクリックしてシークレットコードを確認
    [データベースのシークレット] をクリックしてシークレットコードを確認

 

データベースのルールを変更

  1. [データベース]-[ルール] をクリックして、以下のようにルールを書き換える

    {
         “rules”: {
         “.read”: false,
         “.write”: false,

         “googlehome”: {
              “.read”: true,
            “.write”: true,
            “words”: {
                  “.validate”: “(auth != null || newData.val() === ”)”
                   }
              }
         }
    }

 

 

IFTTT のアプレットに認証コードを追加

  1. IFTTT のマイアプレットへアクセス
  2. 認証を追加するアプレットの [歯車] をクリック
    認証を追加するアプレットの [歯車] をクリック
  3. [URL] に記載されているアドレスの最後に以下を追加
    ※[シークレット] は Firebase の設定で確認したシークレットです。

    ?auth=[シークレット]

[URL] に記載されているアドレスの最後に以下を追加

 

1~2分後に確認したところ、問題なく動作しました。

あまり早すぎると IFTTT 側の認証設定が反映されていないためか、想定通りに動きませんでした。
その影響でアプリ側もフリーズしてしまったので、OS ごと再起動して直りました。