Microsoft Graph APIを使用してアプリケーション プロキシを構成する
この記事では、アプリケーションのAzure Active Directory (Azure AD) アプリケーション プロキシを構成する方法について説明します。 アプリケーション プロキシでは、セキュリティで保護されたリモート アクセスと、オンプレミスの Web アプリケーションへのシングル サインオンが提供されます。 アプリケーションのアプリケーション プロキシを構成した後、ユーザーは外部 URL、マイ アプリ ポータル、またはその他の内部アプリケーション ポータルを使用してオンプレミス アプリケーションにアクセスできます。
前提条件
- このチュートリアルでは、コネクタが既にインストールされており、コネクタが Azure AD サービスと通信できるように、アプリケーション プロキシの前提条件を完了していることを前提としています。
- このチュートリアルでは、Graph エクスプローラーを使用していることを前提としていますが、Postman を使用することも、独自のクライアント アプリを作成して Microsoft Graphを呼び出すこともできます。 このチュートリアルで Microsoft Graph API を呼び出すには、グローバル管理者ロールと適切なアクセス許可を持つアカウントを使用する必要があります。 Graph エクスプローラーでアクセス許可を設定するには、次の手順を実行します。
[Microsoft でサインイン] を選択し、Azure AD グローバル管理者アカウントを使用してサインインします。 サインインすると、左側のウィンドウにユーザー アカウントの詳細が表示されます。
ユーザー アカウントの詳細の右側にある設定アイコンを選択し、[アクセス許可の選択] を選択します。
ディレクトリ (3) へのアクセス許可の一覧をスクロールし、展開して選択します
Directory.ReadWrite.All
。[同意] を選択し、[承諾] を選択してアクセス許可の同意を承諾します。 これらのアクセス許可について、組織の代理として同意する必要はありません。
注意
表示される応答オブジェクトは、読みやすくするために短縮される場合があります。
手順 1: カスタム アプリケーションを作成する
API を使用してアプリのアプリケーション プロキシを構成するには、まずカスタム アプリケーションを作成してから、アプリケーションの onPremisesPublishing プロパティを 更新して、アプリ プロキシ設定を構成します。 このチュートリアルでは、アプリケーション テンプレートを使用して、管理のためにテナントにカスタム アプリケーションとサービス プリンシパルのインスタンスを作成します。 カスタム アプリケーションのテンプレート ID は 8adf8e6e-67b2-4cf2-a259-e3dc5476c621
.
チュートリアルの後半で使用するアプリケーションの ID、 appId、 servicePrincipalId を記録します。
要求
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
。 - redirectUri、 identifierUri、 および 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
関連項目
フィードバック
フィードバックの送信と表示