サービスプリンシパルによるAzure AD アプリケーションの作成
サービスプリンシパルによるAzure AD アプリケーションの作成
Microsoft Teams は、ロールベースのサービスプリンシパルベースの認証をサポートします。 Microsoft Teams への認証にサービスプリンシパルを使用する場合は、ここで説明するように、カスタムAzure AD アプリケーションを作成する必要があります。Azure サービスプリンシパル認証を使用するには、認証アプリケーションにロールを割り当てる機能を設定したのち、Azure AD テナントにアプリケーションを登録し、新しいサービスプリンシパルを作成する必要があります。 この新しいサービスプリンシパルは、割り当てられたロールベースのアクセス制御を利用して、サブスクリプション内のリソースにアクセスできます。
Azure サービスプリンシパルを使用した認証
- 左側のナビゲーションペインでAzure Active Directory ->アプリの登録を選択します。
- 新規登録をクリックします。
- アプリケーションの名前を入力します。
- 希望するテナント設定を選択します。このカスタムアプリケーションはAzure サービスプリンシパル用なので、Any Microsoft Entra ID tenant - Multi Tenant を選択します。
- 新しいアプリケーションを登録するには、登録をクリックします。アプリケーション管理画面が表示されます。
OAuthClientId としてApplication (client) ID の値、AzureTenant としてDirectory (tenant) ID の値をメモします。 - 証明書とシークレットセクションに移動して、アプリケーションの認証タイプを定義します。認証には、証明書(推奨)とクライアントシークレットの2種類があります。
- 証明書による認証: 証明書とシークレットで証明書のアップロードを選択し、ローカルマシンから証明書をアップロードします。 この証明書の作成方法の例については、https://learn.microsoft.com/ja-jp/entra/identity-platform/howto-create-self-signed-certificate を参照してください。
- 新しいクライアントシークレットの作成: 証明書とシークレットで新しいクライアントシークレットを選択し、有効期限を指定します。クライアントシークレットが保存されると、Microsoft Teams はキーの値を表示します。この値は一度しか表示されないので、後で使用するために記録しておきます。(この値がOAuthClientSecret となります。)
- 認証タブに移動し、アクセストークンオプションを選択します。
- Select Required Permissions and then click Add. Under Select an API, select the Microsoft Graph and specifically select the Group.ReadWrite.All, AppCatalog.ReadWrite.All, and User.Read.All permissions.
- 変更を保存します。
- 管理者の同意が必要なアクセス許可([アプリケーションの許可]など)を使用することを指定した場合は、API のアクセス許可ページで現在のテナントから付与することができます。
管理者の同意の付与
カスタムアプリケーションの中には、Azure Active Directory テナント内で操作するために管理者権限が必要なものがあります。管理者の同意は、新しいカスタムAzure AD アプリケーションを作成する際に、すでに"Admin Consent Required" とマークされている関連パーミッションを追加することで付与できます。管理者の同意は、認証フローでクライアント資格情報を使用する場合にも必要です。管理者の同意を付与するには:
- 管理者にhttps://portal.azure.com にログインしてもらいます。
- アプリの登録に移動し、作成したカスタムAzure AD アプリケーションを見つけます。
- API のアクセス許可で、同意の付与をクリックします。
クライアント資格情報の同意
OAuth は、認証のためのクライアント資格情報の使用をサポートします。 クライアント資格情報の認証フローでは、認証するアプリケーション自身の資格情報が作成されます。 認証フローは通常の認証フローと同じように動作しますが、関連するユーザーに対して資格情報の提供を求めるプロンプトは表示されません。 アプリケーションで受理されるすべてのタスクは、デフォルトユーザーコンテキストなしで実行されます。Note: 埋め込まれたOAuth 資格情報はユーザーごとに認証されるため、 クライアント認証フローで使用することはできません。クライアント資格情報を使用するには、必ずカスタムAzure AD アプリケーションを作成する必要があります。
- 上記のように、カスタムAzure AD アプリケーションを作成します。
- アプリの登録に移動します。
- 作成したアプリケーションを探し、API のアクセス許可を開きます。
- Microsoft Graph アクセス許可を選択します。 アクセス許可には2つの異なるアクセス許可セットがあります。委任されたアクセス許可とアプリケーションの許可です。
- サービスプリンシパルで使用する場合は、アプリケーションの許可を指定します。
- インテグレーションに必要なアクセス許可を選択します。
サービスプリンシパルによるAzure AD アプリケーションの作成
Microsoft Teams は、ロールベースのサービスプリンシパルベースの認証をサポートします。 Microsoft Teams への認証にサービスプリンシパルを使用する場合は、ここで説明するように、カスタムAzure AD アプリケーションを作成する必要があります。Azure サービスプリンシパル認証を使用するには、認証アプリケーションにロールを割り当てる機能を設定したのち、Azure AD テナントにアプリケーションを登録し、新しいサービスプリンシパルを作成する必要があります。 この新しいサービスプリンシパルは、割り当てられたロールベースのアクセス制御を利用して、サブスクリプション内のリソースにアクセスできます。
Azure サービスプリンシパルを使用した認証
- 左側のナビゲーションペインでAzure Active Directory ->アプリの登録を選択します。
- 新規登録をクリックします。
- アプリケーションの名前を入力します。
- 希望するテナント設定を選択します。このカスタムアプリケーションはAzure サービスプリンシパル用なので、Any Microsoft Entra ID tenant - Multi Tenant を選択します。
- 新しいアプリケーションを登録するには、登録をクリックします。アプリケーション管理画面が表示されます。
OAuthClientId としてApplication (client) ID の値、AzureTenant としてDirectory (tenant) ID の値をメモします。 - 証明書とシークレットセクションに移動して、アプリケーションの認証タイプを定義します。認証には、証明書(推奨)とクライアントシークレットの2種類があります。
- 証明書による認証: 証明書とシークレットで証明書のアップロードを選択し、ローカルマシンから証明書をアップロードします。 この証明書の作成方法の例については、https://learn.microsoft.com/ja-jp/entra/identity-platform/howto-create-self-signed-certificate を参照してください。
- 新しいクライアントシークレットの作成: 証明書とシークレットで新しいクライアントシークレットを選択し、有効期限を指定します。クライアントシークレットが保存されると、Microsoft Teams はキーの値を表示します。この値は一度しか表示されないので、後で使用するために記録しておきます。(この値がOAuthClientSecret となります。)
- 認証タブに移動し、アクセストークンオプションを選択します。
- Select Required Permissions and then click Add. Under Select an API, select the Microsoft Graph and specifically select the Group.ReadWrite.All, AppCatalog.ReadWrite.All, and User.Read.All permissions.
- 変更を保存します。
- 管理者の同意が必要なアクセス許可([アプリケーションの許可]など)を使用することを指定した場合は、API のアクセス許可ページで現在のテナントから付与することができます。
管理者の同意の付与
カスタムアプリケーションの中には、Azure Active Directory テナント内で操作するために管理者権限が必要なものがあります。管理者の同意は、新しいカスタムAzure AD アプリケーションを作成する際に、すでに"Admin Consent Required" とマークされている関連パーミッションを追加することで付与できます。管理者の同意は、認証フローでクライアント資格情報を使用する場合にも必要です。管理者の同意を付与するには:
- 管理者にhttps://portal.azure.com にログインしてもらいます。
- アプリの登録に移動し、作成したカスタムAzure AD アプリケーションを見つけます。
- API のアクセス許可で、同意の付与をクリックします。
クライアント資格情報の同意
OAuth は、認証のためのクライアント資格情報の使用をサポートします。 クライアント資格情報の認証フローでは、認証するアプリケーション自身の資格情報が作成されます。 認証フローは通常の認証フローと同じように動作しますが、関連するユーザーに対して資格情報の提供を求めるプロンプトは表示されません。 アプリケーションで受理されるすべてのタスクは、デフォルトユーザーコンテキストなしで実行されます。Note: 埋め込まれたOAuth 資格情報はユーザーごとに認証されるため、 クライアント認証フローで使用することはできません。クライアント資格情報を使用するには、必ずカスタムAzure AD アプリケーションを作成する必要があります。
- 上記のように、カスタムAzure AD アプリケーションを作成します。
- アプリの登録に移動します。
- 作成したアプリケーションを探し、API のアクセス許可を開きます。
- Microsoft Graph アクセス許可を選択します。 アクセス許可には2つの異なるアクセス許可セットがあります。委任されたアクセス許可とアプリケーションの許可です。
- サービスプリンシパルで使用する場合は、アプリケーションの許可を指定します。
- インテグレーションに必要なアクセス許可を選択します。