Azure AD認証をUnityから使う(2)

前回の続きです

Azure AD認証をUnityで使う(1)
Azure Active Directoryは、Azureが提供する認証基盤です。どちらかというと企業で使うアプリ(もちろんOffice 365やTeamsなども含む)で使われていて、あまり個人で使ってみたという話は聞きません。対して、同じ...

Azure AD認証をUnityから使うには、MSAL(Microsoft.Identity.Client名前空間のメソッド)を使うのでした。

Unityから使う方法は大きく分けて2つあります。

その1 NuGetからDLLをダウンロードしてインポートする方法

MSALはNuGetで提供されているので、そこからDLLをダウンロードすればUnityで使うことができます。

UnityでNuGetを使うには、NuGet for Unityを使う方法があります。

GitHub - GlitchEnzo/NuGetForUnity: A NuGet Package Manager for Unity
A NuGet Package Manager for Unity. Contribute to GlitchEnzo/NuGetForUnity development by creating an account on GitHub.

しかし、NuGet for UnityでMicrosoft.Identity.Clientをインストールしてしまうと、依存関係にある多数のモジュールが一緒にインストールされてしまい、削除するのに大変苦労します。

なので、NuGetのサイトから直接DLLを落とす方がわかりやすく早いです。

Microsoft.Identity.Client 4.79.2
This package contains the binaries of the Microsoft Authentication Library for .NET (MSAL.NET). MSAL.NET makes it easy t...

Download Packageから落とした拡張子.nupkgのファイルを、拡張子.zipに変更すれば解凍できます。
解凍したものの「lib」フォルダ内に各プラットフォーム向けのDLLが入っていますので、「net461」か「netstandard1.3」のものをインポートしてください。
※UWPで使用するには「uap10.0」のものを使用しますが、Unity Editorで動作しないのでTarget Platformで適宜調整してください。

「Plugins」フォルダを作成して、その中にDLLを配置します。

その2 Unity用のマネージドプラグインを作成する方法

Visual StudioでMSALを使いながら、Unityで使えるマネージドプラグインを作成する方法です。
プロジェクトは「クラスライブラリ」を選択して作っていきます。
Visual Studio内の「NuGet パッケージ マネージャー」からMicrosoft.Identity.Clientをインストールしてください。

マネージドプラグインの作成方法については長くなりますので下記などを参照してください。

HoloLens用 Managed Pluginの作り方 - つくるの大好き。
ご無沙汰しております。ご無沙汰の間に家族がひとり増えちゃいました☆ さて、HoloLensアプリのUnityプロジェクトにおいて、一部のソースコードを非公開にしたいと思い、ManagedのPluginを作ろうとしたのですが思いのほかハマって...
どっちがいいの?

比較ですが、後者のマネージドプラグインを作成する方が圧倒的におすすめです。
DLLのインストールも楽ですし、単体テストがUnity上で行うより圧倒的にやりやすく、デバッグ機能も充実しています。

しかし、それなりに準備が必要なので、今回は説明のために前者の方法で行います。

Public ClientとConfidential Client

さてコーディングに入っていきますが、前回簡単に紹介したサンプルでは、PublicClientを使って認証を行っているようでした。
このクライアントには2種類あります。

パブリックおよび機密のクライアント アプリ (MSAL) - Microsoft identity platform
Microsoft Authentication Library (MSAL) でのパブリック クライアント アプリケーションと機密クライアント アプリケーションについて説明します。

いろいろ書いてありますが、結果的にはUnityでも「Public Client」を利用します。
デスクトップアプリ(Unityで作ったアプリも含む)は逆アセンブリなどで比較的簡単に中身を見ることができます。
Confidential ClientではSecretなど機密の値を保持する必要があるので、サーバアプリに適しています。
逆にPublic ClientはアプリIDしか保持しません。

参考にするサンプルアプリ

公式のWPFアプリの解説が下記にあります。

チュートリアル: 認証に Microsoft ID プラットフォームを使用する Windows Presentation Foundation (WPF) アプリを作成する - Microsoft identity platform
このチュートリアルでは、ユーザーのサインインに Microsoft ID プラットフォームを使用し、そのユーザーに代わって Microsoft Graph API を呼び出すためのアクセス トークンを取得する WPF アプリケーションをビル...

これをUnityに移植していきます。

(つづく・・)

コメント

タイトルとURLをコピーしました