管理者向けMDM設定
RedirectWebはAppleのManaged App Configurationをサポートしており、Jamf、Intune、Kandjiなどのモバイルデバイス管理(MDM)ソリューションを介して、従業員や学生のデバイス間でアプリ設定を一元的にデプロイおよび管理できます。
このページでは、構成可能なキー、アプリの動作、ベストプラクティス、および制限事項の概要について説明します。
概要
Apple Business Manager / Apple School Manager (VPP) でのデプロイについて: 標準のRedirectWebアプリはフリーミアムのアプリ内課金モデルを使用しており、VPPのボリューム購入には対応していません。組織に完全にロック解除されたアプリをデプロイするには、MDM/VPP配信専用に設計された買い切り版の RedirectWeb Pro アプリを購入してください。
MDMを介して構成をプッシュすることで、以下のことが可能になります:
- 強制ルール: ユーザーが変更または削除できない組織全体の転送ルールを適用します。
- 初期ルールの配布: アプリの初回起動時にデフォルトとして機能するテンプレートルールセットを配布します。
- UI制御: 特定の機能(ライブラリなど)へのアクセスを制限し、組織の管理下にあることをアプリ内で明示します。
- 大規模ルールの取得(フォールバック): 外部サーバーからルールを取得することで、MDMのペイロードサイズの制限を回避します。
ユースケース
- システム移行時のシームレスなルーティング:
レガシーな社内システム(例:
legacy-crm.internal.local)から新しいプラットフォーム(例:salesforce.com)に移行する場合、enforcedRuleSetを配布します。従業員が古いブックマークを使用しても自動的に新しいシステムにリダイレクトされるため、古いリンクに関するITサポートへの問い合わせを削減できます。 - イントラネットアクセスのアシスト: Omnissa WebなどのPer-App VPNトンネルを介したイントラネットリソースへのアクセスを容易にするために、カスタムURLスキームを使用した転送ルールを配布します。
MDM構成のプッシュは、ユーザーがRedirectWebアプリを開いた場合にのみ、即座に適用されます。 アプリはバックグラウンドタスクを使用してMDMの更新をブラウザ拡張機能にサイレントにプッシュしますが、これはOSによって規定された「ベストエフォート」の実行です。実行のタイミングは非常に予測が難しく、タスクが全く実行されない場合もあります。 したがって、この機能は、クラウドサービスの停止から数分以内にすべての従業員をバックアップサイトに即座にリダイレクトしようとするような、緊急性の高いインシデント対応には依存しないでください。
デモ
動画で使用されているplistファイルは、Dictionary(<dict>)キーを使用した sample-mdm.plist として入手可能です。また、JSON Stringキーを使用した sample-mdm-json-string.plist もあります(データ内容は同じです)。
動画ではManageEngineのMDMを使用して構成をデプロイしていますが、AppleのManaged App Configurationをサポートしている他のMDMソリューションでも同じ構成を使用できます。
Dictionary vs. JSON String: Dictionary型の方が型安全ですが、一部のMDMソリューション(Omnissa Workspace ONE UEMなど)では、管理対象アプリの構成でDictionary型をサポートしていません。そのような場合、JSON String型を使用することが推奨される回避策です。
構成可能なキー
MDMコンソールを介して、Managed App Configuration用の以下のキーと値をデプロイします(通常はplist形式)。
| キー名 | 型 | 説明 |
|---|---|---|
enforcedRuleSet | ルールセット | 通常のルールよりも高い優先度で適用されるルールセット。リスト内の最初のルールが優先されます。ユーザーはこれらのルールを編集、削除、または並べ替えることはできません。これらは常にアクティブで、アプリのグローバルな無効化トグルを無視し、iCloud経由で同期されません。 |
enforcedRuleSetJSONString | JSON String | enforcedRuleSetと同じですが、ルールセットは生のJSON文字列として提供されます。これは、管理対象アプリの構成でDictionary型をサポートしていないMDMプラットフォームで役立ちます。 |
prefilledRuleSet | ルールセット | 既存のルールがない状態でユーザーが初めてアプリを起動したときに、デフォルトの例ルールの代わりに作成されるルールセット。一度配布されると、これらは通常のルールとして機能し、ユーザーによる変更、削除、およびiCloud同期が可能です。 |
prefilledRuleSetJSONString | JSON String | prefilledRuleSetと同じですが、ルールセットは生のJSON文字列として提供されます。これは、管理対象アプリの構成でDictionary型をサポートしていないMDMプラットフォームで役立ちます。 |
organizationName | String | アプリ内設定画面の上部に「Managed by [organizationName]」([organizationName] によって管理されています)と表示され、アプリが管理されていることをユーザーに示します。 |
managedConfigVersion | String | 構成の任意のバージョン文字列。UIに表示され、トラブルシューティング時にITサポートが最新のMDMペイロードがデバイスに到達したかどうかを確認できます。 |
showsLibrarySection | Boolean | falseに設定すると、ルールライブラリ機能が非表示になり、そのセクションは「Restricted by your organization.」(組織によって制限されています)というエラーメッセージに置き換わります。 |
fallback | フォールバック | MDMのペイロードサイズ制限を超えた場合に指定します。アプリは、fallbackDataURLで指定されたURLから構成を取得します。 |
fallbackJSONString | JSON String | fallbackと同じですが、フォールバック構成は生のJSON文字列として提供されます。これは、管理対象アプリの構成でDictionary型をサポートしていないMDMプラットフォームで役立ちます。 |
これらのキーはすべてオプションです。
構成値の型
ルールセット
各ルールオブジェクトは、アプリ経由で共有/エクスポートできるものと同じ形式ですが、次のようにJSONからplistに変換する必要があります。
...
<key>enforcedRuleSet</key>
<dict>
<key>kind</key>
<string>RedirectList</string>
<key>bundleID</key>
<string>io.github.mshibanami.RedirectWebForSafari</string>
<key>formatVersion</key>
<string>5</string>
<key>redirects</key>
<array>
<dict>
<key>kind</key>
<string>Redirect</string>
<key>type</key>
<string>originalRedirect</string>
<key>title</key>
<string>My enforced Rule</string>
<key>sourceURLPattern</key>
<dict>
<key>type</key>
<string>wildcard</string>
<key>value</key>
<string>https://example.com/1</string>
</dict>
<key>destinationURLPattern</key>
<string>https://google.com/search?q=1</string>
</dict>
</array>
</dict>
...
フォールバック
| キー名 | 型 | 説明 |
|---|---|---|
fallbackDataURL | String (URL) | ルールセットを含むJSON/XMLファイルのエンドポイントURL。 |
authToken | String | fallbackDataURLから取得する際にHTTPヘッダーに追加される認証トークン。(Authorization: Bearer [authToken] として使用されます)。 |
JSON String
一部のMDMプラットフォーム(例:Omnissa Workspace ONE UEM)は、管理対象アプリの構成においてDictionary(<dict>)型をサポートしていません。回避策として、JSONStringで終わるキー(enforcedRuleSetJSONString、prefilledRuleSetJSONString、fallbackJSONStringなど)は、Dictionary版と同じデータを受け取りますが、plistの<string>要素内で生のJSON文字列としてエンコードされます。
JSON文字列は、次の例に示すように、読みやすさのために改行やインデントを含めた整形済みのもの、または最小化されたもののいずれでも可能です。
...
<key>enforcedRuleSetJSONString</key>
<string>{
"kind": "RedirectList",
"bundleID": "io.github.mshibanami.RedirectWebForSafari",
"formatVersion": "5",
"redirects": [
{
"kind": "Redirect",
"type": "originalRedirect",
"title": "My enforced Rule",
"sourceURLPattern": {
"type": "wildcard",
"value": "https://example.com/1"
},
"destinationURLPattern": "https://google.com/search?q=1"
}
]
}</string>
...
Dictionaryキーとその対応するJSONStringキーの両方が存在する場合(例:enforcedRuleSetとenforcedRuleSetJSONStringの両方)、Dictionaryキーが優先されます。
ルール評価と競合解決
enforcedRuleSetが提供されている場合、そのルールが絶対的な優先順位で適用されます。- 通常のルールがなく、
prefilledRuleSetが存在する場合、prefilledRuleSetが通常のルールとして保存されます。 - デフォルトの「例の転送ルール」は、MDMルールが構成されておらず、かつ通常のルールがない場合にのみ生成されます。
フォールバックURLの動作
インラインMDMペイロードとfallbackDataURL経由で取得されたデータの両方にキーが存在する場合、アプリは次のように競合を処理します:
- 取得完了前: インライン設定が厳格に優先され、使用されます。
- 取得成功後:
fallbackDataURLから取得されたデータが、対応するインライン設定を上書きします。 - 取得失敗後: アプリは引き続きインライン設定を使用します。
- 独立したキー: インラインペイロードにのみ存在するキーは常に保持されます。
MDMフィードバックとステータス確認
MDMソリューションがサポートしている場合、MDMフィードバックチャネル(com.apple.feedback.managed)を介して、構成が正常に適用されたかどうかを確認できます。構成の処理(またはURL取得の完了)後、アプリは以下のデータを返します:
managedConfigVersion: 構成の試行のバージョン文字列。result:successまたはerror。messages: 該当する場合、詳細なエラーまたは警告メッセージを含む配列。