Microsoft Graph APIを使用してアプリケーション プロキシを構成する

この記事では、アプリケーションのAzure Active Directory (Azure AD) アプリケーション プロキシを構成する方法について説明します。 アプリケーション プロキシでは、セキュリティで保護されたリモート アクセスと、オンプレミスの Web アプリケーションへのシングル サインオンが提供されます。 アプリケーションのアプリケーション プロキシを構成した後、ユーザーは外部 URL、マイ アプリ ポータル、またはその他の内部アプリケーション ポータルを使用してオンプレミス アプリケーションにアクセスできます。

前提条件

  • このチュートリアルでは、コネクタが既にインストールされており、コネクタが Azure AD サービスと通信できるように、アプリケーション プロキシの前提条件を完了していることを前提としています。
  • このチュートリアルでは、Graph エクスプローラーを使用していることを前提としていますが、Postman を使用することも、独自のクライアント アプリを作成して Microsoft Graphを呼び出すこともできます。 このチュートリアルで Microsoft Graph API を呼び出すには、グローバル管理者ロールと適切なアクセス許可を持つアカウントを使用する必要があります。 Graph エクスプローラーでアクセス許可を設定するには、次の手順を実行します。
    1. エクスプローラー Graph起動します

    2. [Microsoft でサインイン] を選択し、Azure AD グローバル管理者アカウントを使用してサインインします。 サインインすると、左側のウィンドウにユーザー アカウントの詳細が表示されます。

    3. ユーザー アカウントの詳細の右側にある設定アイコンを選択し、[アクセス許可の選択] を選択します。

      アクセス許可の設定

    4. ディレクトリ (3) へのアクセス許可の一覧をスクロールし、展開して選択します Directory.ReadWrite.All

      アクセス許可を検索する

    5. [同意] を選択し、[承諾] を選択してアクセス許可の同意を承諾します。 これらのアクセス許可について、組織の代理として同意する必要はありません。

      アクセス許可に同意する

注意

表示される応答オブジェクトは、読みやすくするために短縮される場合があります。

手順 1: カスタム アプリケーションを作成する

API を使用してアプリのアプリケーション プロキシを構成するには、まずカスタム アプリケーションを作成してから、アプリケーションの onPremisesPublishing プロパティを 更新して、アプリ プロキシ設定を構成します。 このチュートリアルでは、アプリケーション テンプレートを使用して、管理のためにテナントにカスタム アプリケーションとサービス プリンシパルのインスタンスを作成します。 カスタム アプリケーションのテンプレート ID は 8adf8e6e-67b2-4cf2-a259-e3dc5476c621.

チュートリアルの後半で使用するアプリケーションの IDappIdservicePrincipalId を記録します。

要求

POST https://graph.microsoft.com/v1.0/applicationTemplates/8adf8e6e-67b2-4cf2-a259-e3dc5476c621/instantiate
Content-type: application/json

{
  "displayName": "Contoso IWA App"
}

応答

HTTP/1.1 201 Created
Content-type: application/json

{
  "@odata.context": "https://graph.microsoft.com/beta/$metadata#applications/$entity",
  "id": "bf21f7e9-9d25-4da2-82ab-7fdd85049f83",
  "deletedDateTime": null,
  "addIns": [],
  "appId": "d7fbfe28-c60e-46d2-8335-841923950d3b",
  "applicationTemplateId": null,
  "identifierUris": [],
  "createdDateTime": "2020-08-11T21:07:47.5919755Z",
  "description": null,
  "displayName": "Contoso IWA App",
  "isAuthorizationServiceEnabled": false,
  "isDeviceOnlyAuthSupported": null,
  "isFallbackPublicClient": null,
  "groupMembershipClaims": null,
  "notes": null,
  "optionalClaims": null,
  "orgRestrictions": [],
  "publisherDomain": "f128.info",
  "signInAudience": "AzureADandPersonalMicrosoftAccount",
  "tags": [],
  "tokenEncryptionKeyId": null,
  "uniqueName": null,
  "verifiedPublisher": {
      "displayName": null,
      "verifiedPublisherId": null,
      "addedDateTime": null
  },
}

手順 2: アプリケーション プロキシを構成する

アプリケーション用に記録した ID を 使用して、アプリケーション プロキシの構成を開始します。 次のプロパティを更新します。

  • onPremisesPublishing - この例では、内部 URL https://contosoiwaapp.comを持つアプリを使用しています。 また、外部 URL には既定のドメインを使用します https://contosoiwaapp-contoso.msappproxy.net
  • redirectUriidentifierUriおよび homepageUrl - onPremisesPublishing プロパティで構成されたのと同じ外部 URL に設定します。
  • implicitGrantSettings - enabledTokenIssuance と enabledAccessTokenIssuance の場合 設定trueします。false

要求

PATCH https://graph.microsoft.com/beta/applications/bf21f7e9-9d25-4da2-82ab-7fdd85049f83
Content-type: application/json

{
  "onPremisesPublishing": {
    "externalAuthenticationType": "aadPreAuthentication",
    "internalUrl": "https://contosoiwaapp.com",
    "externalUrl": "https://contosoiwaapp-contoso.msappproxy.net"
  },
  "identifierUris": ["https://contosoiwaapp-contoso.msappproxy.net"],
  "web": {
    "redirectUris": ["https://contosoiwaapp-contoso.msappproxy.net"],
    "homePageUrl": "https://contosoiwaapp-contoso.msappproxy.net",
    "implicitGrantSettings": {
      "enableIdTokenIssuance": true,
      "enableAccessTokenIssuance": false
    }
  }
}

応答

HTTP/1.1 204 No content

手順 3: アプリケーションにコネクタ グループを割り当てる

コネクタを取得する

使用可能なコネクタを一覧表示します。 コネクタ グループに割り当てるコネクタの ID を 記録します。

要求

GET https://graph.microsoft.com/beta/onPremisesPublishingProfiles/applicationProxy/connectors

応答

HTTP/1.1 200 OK
Content-type: application/json

{
  "@odata.context": "https://graph.microsoft.com/beta/$metadata#connectors",
  "value": [
    {
      "id": "d2b1e8e8-8511-49d6-a4ba-323cb083fbb0",
      "machineName": "connectorA.redmond.contoso.com"",
      "externalIp": "131.137.147.164",
      "status": "active"
    },
    {
      "id": "f2cab422-a1c8-4d70-a47e-2cb297a2e051",
      "machineName": "connectorB.contoso.com"",
      "externalIp": "68.0.191.210",
      "status": "active"
    }
  ]
}

connectorGroup を作成する

この例では、アプリケーションに使用される名前の IWA Demo Connector Group 新しい connectorGroup が作成されます。 次の手順で使用するために返される ID を 記録します。

要求

POST https://graph.microsoft.com/beta/onPremisesPublishingProfiles/applicationProxy/connectorGroups

Content-type: application/json
{
  "name": "IWA Demo Connector Group"
}

応答

HTTP/1.1 201
Content-type: connectorGroup/json

{
  "@odata.context": "https://graph.microsoft.com/beta/$metadata#connectorGroups/$entity",
  "id": "3e6f4c35-a04b-4d03-b98a-66fff89b72e6",
  "name": "IWA Demo Connector Group",
  "connectorGroupType": "applicationProxy",
  "isDefault": false
}

コネクタを connectorGroup に割り当てる

要求

POST https://graph.microsoft.com/beta/onPremisesPublishingProfiles/applicationProxy/connectors/f2cab422-a1c8-4d70-a47e-2cb297a2e051/memberOf/$ref
Content-type: application/json

{
  "@odata.id":"https://graph.microsoft.com/beta/onPremisesPublishingProfiles/applicationProxy/connectorGroups/3e6f4c35-a04b-4d03-b98a-66fff89b72e6"
}

応答

HTTP/1.1 204 No content

connectorGroup にアプリケーションを割り当てる

要求

PUT https://graph.microsoft.com/beta/applications/bf21f7e9-9d25-4da2-82ab-7fdd85049f83/connectorGroup/$ref
Content-type: application/json

{
"@odata.id":"https://graph.microsoft.com/onPremisesPublishingProfiles/applicationproxy/connectorGroups/3e6f4c35-a04b-4d03-b98a-66fff89b72e6"
}

応答

HTTP/1.1 204 No content

手順 4: シングル サインオンを構成する

このアプリケーションでは、統合Windows認証 (IWA) を使用します。 IWA を構成するには、 onPremisesPublishing のシングル サインオン プロパティを設定します。

要求

PATCH https://graph.microsoft.com/beta/applications/bf21f7e9-9d25-4da2-82ab-7fdd85049f83
Content-type: appplication/json

{
  "onPremisesPublishing": {
    "singleSignOnSettings": {
      "kerberosSignOnSettings": {
        "kerberosServicePrincipalName": "HTTP/iwademo.contoso.com",
        "kerberosSignOnMappingAttributeType": "userPrincipalName"
      },
      "singleSignOnMode": "onPremisesKerberos"
    }
  } 
}

応答

HTTP/1.1 204 No content

手順 5: ユーザーを割り当てる

アプリケーションの appRole を取得する

サービス プリンシパルの ID を 使用して、アプリケーションのアプリ ロールを取得します。 次の手順で使用する ユーザー アプリ ロールの ID を 記録します。

要求

GET https://graph.microsoft.com/beta/servicePrincipals/a8cac399-cde5-4516-a674-819503c61313/appRoles

応答

HTTP/1.1 200
Content-type: application/json

{
  "@odata.context": "https://graph.microsoft.com/beta/$metadata#servicePrincipals('a8cac399-cde5-4516-a674-819503c61313')/appRoles",
  "value": [
    {
      "allowedMemberTypes": [
        "User"
      ],
      "description": "User",
      "displayName": "User",
      "id": "18d14569-c3bd-439b-9a66-3a2aee01d14f",
      "isEnabled": true,
      "origin": "Application",
      "value": null
    },
  ]
}

ユーザー アカウントを作成する

このチュートリアルでは、アプリ ロールに割り当てられたユーザー アカウントを作成します。 要求本文で、テナントのドメイン名に変更 contoso.com します。 テナントの情報は、Azure Active Directory の概要ページで確認できます。 次の手順で使用するユーザー アカウントの ID を 記録します。

要求

POST https://graph.microsoft.com/v1.0/users
Content-type: application/json

{
  "accountEnabled":true,
  "displayName":"MyTestUser1",
  "mailNickname":"MyTestUser1",
  "userPrincipalName":"MyTestUser1@contoso.com",
  "passwordProfile": {
    "forceChangePasswordNextSignIn":true,
    "password":"Contoso1234"
  }
}

応答

{
  "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users/$entity",
  "id": "4628e7df-dff3-407c-a08f-75f08c0806dc",
  "businessPhones": [],
  "displayName": "MyTestUser1",
  "givenName": null,
  "jobTitle": null,
  "mail": null,
  "mobilePhone": null,
  "officeLocation": null,
  "preferredLanguage": null,
  "surname": null,
  "userPrincipalName": "MyTestUser1@contoso.com"
}

アプリケーションにユーザーを割り当てる

次の例では、これらのプロパティの値を置き換えます。

  • ユーザーの ID を 持つ principalId
  • appRoleId とアプリ ロールの ID
  • サービス プリンシパルの ID を 持つ resourceId

要求

POST https://graph.microsoft.com/beta/servicePrincipals/b00c693f-9658-4c06-bd1b-c402c4653dea/appRoleAssignments
Content-type: appRoleAssignments/json

{
  "principalId": "4628e7df-dff3-407c-a08f-75f08c0806dc",
  "principalType": "User",
  "appRoleId":"18d14569-c3bd-439b-9a66-3a2aee01d14f",
  "resourceId":"a8cac399-cde5-4516-a674-819503c61313"
}

応答

HTTP/1.1 200
Content-type: application/json

{
  "@odata.context": "https://graph.microsoft.com/beta/$metadata#appRoleAssignments/$entity",
  "id": "I23pL8ZdNU-CIgQmqMEVyLJ0E6fx0ixEo92az8MnhtU",
  "creationTimestamp": "2020-06-09T00:06:07.5129268Z",
  "appRoleId": "18d14569-c3bd-439b-9a66-3a2aee01d14f",
  "principalDisplayName": "MyTestUser1",
  "principalId": "2fe96d23-5dc6-4f35-8222-0426a8c115c8",
  "principalType": "User",
  "resourceDisplayName": "Contoso IWA App",
  "resourceId": "a8cac399-cde5-4516-a674-819503c61313"
}

手順 6: アプリケーションへのアクセスをテストする

ブラウザーでアプリ用に構成された 外部 URL に アクセスしてアプリケーションをテストし、テスト ユーザーと共にサインインします。 アプリにログインし、アプリケーションにアクセスできる必要があります。

手順 7: リソースをクリーンアップする

このチュートリアルで作成したリソースは、運用環境で使用することを意図していません。 この手順では、作成したリソースを削除します。

ユーザー アカウントを削除する

ユーザー アカウント MyTestUser1 を削除します。

要求

DELETE https://graph.microsoft.com/v1.0/users/4628e7df-dff3-407c-a08f-75f08c0806dc

応答

No Content - 204

アプリケーションを削除する

要求

DELETE https://graph.microsoft.com/v1.0/applications/bf21f7e9-9d25-4da2-82ab-7fdd85049f83

応答

No Content - 204

コネクタ グループを削除する

要求

DELETE https://graph.microsoft.com/beta/onPremisesPublishingProfiles/applicationProxy/connectorGroups/3e6f4c35-a04b-4d03-b98a-66fff89b72e6

応答

No Content - 204

関連項目