Microsoft Azure スポークのクライアント認証情報の使用Microsoft Azure スポークのクライアント認証情報の使用 OAuth 2.0 クライアント認証情報の権限許可フローは、ユーザーとの即時のインタラクションなしにバックグラウンドで実行する必要があるサーバー間のインタラクションによく使用されます。これらのタイプのアプリケーションは、多くの場合、デーモンまたはサービスアカウントと呼ばれます。 場合によっては、サインインしているユーザーが持つ権限よりも昇格された権限を組織内で必要とする機能も使用する必要があります。クライアント認証情報の権限許可フローは、これらのシナリオの画像になります。 クライアント認証情報の権限許可フローにより、Web サービス (機密クライアント) は、別の Web サービスを呼び出すときに、ユーザーの代理操作を行うのではなく、独自の認証情報を使用して認証を行うことができます。 認証および承認のステップ Azure AD にアプリを登録する適切な API 権限のアサインアプリケーション にロールをアサインします (オプション:委任された権限を持つユーザーが必要な職務を実行する場合に備えて)各 Azure サービスを OAuth プロバイダーとして設定アクセストークン の生成 (オプション) 1. アプリを登録 Microsoft ID プラットフォーム エンドポイントを使用するには、 Azure アプリ登録ポータルを使用してアプリを登録する必要があります。Microsoft アカウントまたは職場または学校アカウントを使用して、アプリを登録できます。 OAuth 2.0 認証コード権限許可フローを使用するようにアプリを構成するには、アプリを登録するときに次の値を保存する必要があります。 アプリ登録ポータルによってアサインされたアプリケーション (クライアント) ID。クライアント (アプリケーション) シークレット。パスワードまたは公開鍵または秘密鍵のペア (証明書)。これはネイティブ アプリでは必須ではありません。アプリが Azure AD から応答を受信するためのリダイレクト URI (または応答 URL)。 Azure portal でアプリを構成する手順については、「 アプリケーションを Microsoft ID プラットフォームにアプリケーションを登録する。」を参照してください。 2. 必要な API 権限のアサイン Graph API にアクセスするには、アプリに必要な API アクセス許可を宣言する必要があります。以下の手順に従って、アプリケーションに API 権限をアサインします。 職場または学校アカウント、または個人の Microsoft アカウントを使用してAzure portal にサインインします。アカウントで複数のテナントにアクセスできる場合は、右上隅でアカウントを選択し、ポータル セッションを目的の Azure AD テナントに設定します。 左側のナビゲーション ウィンドウで、Azure Active Directory サービスを選択し、アプリの登録 > を選択します。 アプリケーションを開きます。左側のナビゲーションペインから [API 権限] を選択します。アクセス許可の追加ボタンをクリックします。Microsoft Graph > アプリケーションのアクセス許可] を選択します。利用可能な権限のリストから必要な権限を選択し、 アドミンの同意を付与する ボタンをクリックしてアドミンの同意を付与します。注: スポークのドキュメントを参照して、各アクションに必要なそれぞれの委任権限またはアプリケーション権限を確認してください。 3. アプリケーションにロールをアサインする (オプション) 一部の操作を実行するために委任された権限を持つユーザーが必要なシナリオがあります。この場合、アプリに API 権限を割り当てるだけでは不十分です。 そのようなシナリオの 1 つが ユーザーパスワードのリセット」アクションです。passwordProfile プロパティを更新するときは、委任されたアクセス許可のみである "Directory.AccessAsUser.All" アクセス許可が必要です。 そのため、アプリに割り当てられているアクセス許可に関係なく、パスワード プロファイルの更新は失敗します。 もちろん、複数の子エイリアスを作成し、「認証コード」権限許可フローを使用してそのような操作を実行することもできます。ただし、これに対する最善の解決策は、必要かつ 十分なロール をアプリケーションに追加して、委任されたアクセス許可を持つユーザーが実行する必要がある職務をアプリが実行できるようにすることです。これは一部のPowerShellモジュールで実現でき、サーバー側での1回限りの作業です。 PowerShell モジュールには、Office 365 に接続し、ユーザー アカウント、グループ、ライセンスを管理するために使用できる 2 つのバージョンがあります。 グラフ用 Azure Active Directory PowerShellWindows PowerShell 用 Microsoft Azure Active Directory モジュール 注:パスワード管理の最小ロールである「パスワードアドミニストレーター」ロールを使用します。ユーザー管理の他の必要な機能を実行するために、「ヘルプデスク管理者」などのより高い特権ロールを提供することが必要になる場合があります。Azure によって提供されるロールの詳細については、「 Azure AD の組み込みロール 」を参照してください。 A. グラフ用 Azure Active Directory PowerShell § AAD PowerShell V2.0 モジュールをインストールしてログインする Install-Module AzureADConnect-AzureAD § アプリケーションの ObjectID を取得する $myAppName = "<your_app_name>"$myApp = Get-AzureADServicePrincipal -searchstring $myAppName$objectID = $myApp.ObjectId § ロールメンバーを追加 $myAADRole = Get-AzureADDirectoryRole |Where-Object {$_.displayName -eq 'パスワード管理者'}Add-AzureADDirectoryRoleMember -ObjectId $myAADRole.ObjectId -RefObjectId $objectID B. Windows PowerShell 用 Microsoft Azure Active Directory モジュール § MSOnline モジュールのインストールとログイン Install-Module -Name MSOnline dotnet core で Mac OS を使用している場合は、モジュールを明示的にインポートする必要があります。Import-Module MSOnline Connect-MsolService § アプリケーションの ObjectID を取得する $tenantID = “<Tenant ID>” $appID = “<Application ID>”$myApp = Get-MsolServicePrincipal -AppPrincipalId $appID -TenantID $tenantID$objectID = $myApp.ObjectId § ロールメンバーを追加 Add-MsolRoleMember -RoleName "Password Administrator" -RoleMemberType ServicePrincipal -RoleMemberObjectId $objectID § たまたま必要なロールでない場合は、削除することもできます Remove-MsolRoleMember -RoleName "Password Administrator" -RoleMemberType ServicePrincipal -RoleMemberObjectId $objectID 4. 各 Azure サービスを OAuth プロバイダーとして設定 各 Azure サービスのセットアップ手順は、それぞれのスポークドキュメントから従うことができます。注意する必要があるのは、アプリケーションレジストリで デフォルトの権限許可タイプ を クライアント認証情報 として選択し、 権限許可タイプ を クライアント認証情報 として選択することです。 5. アクセストークンを生成する (オプション) API 操作を実行するには、アクセストークンを生成する必要があります。ただし、クライアント認証情報の場合は、トークンを手動で生成する必要はありません。アクションを実行すると、トークンが自動的に生成されます。 ただし、Azure のアクセストークンが既に存在し、新しいトークンで既存のトークンを上書きできないシナリオもあります。この場合、最初に「トークンの管理」テーブルから既存のトークンを削除することをお勧めします。 アクセストークンを手動で生成する必要があると感じた場合でも、以下の手順でトークンを生成できます。 フィルターナビゲーターで「認証情報」を検索します。認証情報を選択します。[OAuth トークンの取得] をクリックします。 クライアント資格情報はユーザーのサインインを必要としないため、サインイン プロンプトなしでトークンがフェッチされ、アクセス トークンを使用して API 操作とアクションを実行できます。