本日は Azure と HoloLens2 の技術調査枠です。
Azure の SignalRService を使ってサーバから HoloLens2 にデータを送信する方法を試したので作業記録を記事にします。
前回記事の続きです。
bluebirdofoz.hatenablog.com
Azure FunctionのAuthorization levelをFunctionにした場合
前回記事で Tips に記述した通り、Authorization level を Anonymous にした場合、URL を知っていれば誰でもアクセス可能になります。
本記事では Authorization level を Function に設定し、関数キーを知っている人のみアクセス可能なようにする場合の手順を記録します。
Azure Function関数の変更
最初に Azure Function に登録している関数の Authorization level を Function に変更します。
パッケージで作成済みの関数を削除する
前々回作成した関数を削除します。
ただしパッケージファイルから発行した関数は[関数]タブからは削除できません。
パッケージファイルから発行した関数を削除するには[構成]タブを開きます。
[WEBSITE_RUN_FROM_PACKAGE]の設定を削除し、変更内容を[保存]します。
これで作成した関数が削除されます。
Authorization levelの変更
Azure Function の関数プロジェクトを開きます。
以下の通り、AuthorizationLevel の設定を AuthorizationLevel.Function に変更します。
この設定で改めて関数の発行を行います。
発行が完了したら設定が正しく行われているか AzurePortal で確認してみます。
Azure Function のページを開き、[関数]タブから関数を選択します。
関数のページが開いたら[コードとテスト]タブを開きます。
[authLevel]の項目が[function]になっていれば、正しく設定できています。
クライアントアプリの変更
次にクライアントアプリを修正します。
関数キーの取得
Authorization level が Function の関数にアクセスするには関数キーが必要です。
関数のページを開き、[関数キー]タブを開きます。
関数キーの[値]を表示し、メモしておきます。
なお、関数キーは関数ごとにメモしておく必要があります。
今回は negotiate と broadcast の2つの関数の関数キーをメモしました。
x-functions-keyの追加
クライアントアプリのプロジェクトを開きます。
それぞれの関数アクセスに x-functions-key の headers 情報を追加します。
HubConnectionBuilder().WithUrl 関数の場合は以下の通り、headers 情報を設定します。
this.Connection = new HubConnectionBuilder().WithUrl($"{RootUrl}/api", options => { options.Headers["x-functions-key"] = AZURE_FUNCTION_KEY; }).Build();
HttpClient の場合は以下の通り、headers 情報を設定します。
this.HttpClient.DefaultRequestHeaders.Add("x-functions-key", AZURE_FUNCTION_KEY);
AZURE_FUNCTION_KEY の部分にはそれぞれの関数キーを設定します。
コードを以下の通り修正しました。
メニューから[ビルド -> (プロジェクト名)のリビルド]を選択し、再ビルドを行います。
動作確認
クライアントアプリを起動します。
[Connect]ボタンを押して、Azure Function を通して SignalR に接続できることを確認します。
アプリを2つ立ち上げて[Broadcast]ボタンも正常に動作していることを確認します。
長くなったので分けます。
次は HoloLens2 用クライアントアプリの作成です。
bluebirdofoz.hatenablog.com