Как определить облачные приложения Azure AD, возвращаемые конечной точкой API / бета / приложений Microsoft Graph? - PullRequest
0 голосов
/ 08 января 2019

У меня есть рабочая учетная запись в Azure AD, которой предоставлен доступ к некоторым облачным приложениям в организации. Я могу войти в систему, просмотреть и запустить приложения с портала MyApps .

Я создал простое приложение Javascript (React), которое должно читать тот же список приложений. Я загружаю его из конечной точки Microsoft Graph API / бета / приложений.

Как отфильтровать список, чтобы оставить только облачные приложения, показанные на портале MyApps?

Я успешно реализовал следующее:

  • Аутентификация с использованием MSAL для Azure AD.

  • Получил список всех приложений в организации пользователя из Microsoft Graph API (GET https://graph.microsoft.com/beta/applications).. Я вижу этот же список на портале Azure (Azure Active Directory -> Регистрация приложений (предварительная версия)) для указанная организация, которая называется здесь "каталог".

Это элемент приложения, возвращенный Microsoft Graph API и показанный на портале MyApps:

{
  "id": "xxxxxxxx-xxxx-xxxx-xxxx-28a2179502fc",
  "deletedDateTime": null,
  "isFallbackPublicClient": false,
  "appId": "xxxxxxxx-xxxx-xxxx-xxxx-987d1f301c21",
  "identifierUris": [ "https://bitbucket.xxxxxxxxxx.io/plugins/servlet/samlsso", "http://samlssoforbitbucketbyresolutionXXXXXXXXXXXXXXXXXB9CCD803EA52CD5", "http://instanceid_xxxxxxxx-xxxx-xxxx-xxxx-19ba3d89b76f_XXXXXXXXXXXXX342A36A84E328233FB4", "http://samlssoforbitbucketbyresolution/xxxxxxxx-xxxx-xxxx-xxxx-e3b08c22b8e9" ],
  "createdDateTime": "2017-12-02T09:05:35Z",
  "displayName": "Bitbucket",
  "isDeviceOnlyAuthSupported": null,
  "groupMembershipClaims": "SecurityGroup",
  "optionalClaims": null,
  "orgRestrictions": [],
  "publisherDomain": null,
  "signInAudience": "AzureADMyOrg",
  "tags": [],
  "tokenEncryptionKeyId": null,
  "api": {
    "requestedAccessTokenVersion": null,
    "acceptMappedClaims": null,
    "knownClientApplications": [],
    "oauth2PermissionScopes": [
      {
        "adminConsentDescription": "Allow the application to access SAML SSO for Bitbucket by resolution GmbH on behalf of the signed-in user.",
        "adminConsentDisplayName": "Access SAML SSO for Bitbucket by resolution GmbH",
        "id": "xxxxxxxx-xxxx-xxxx-xxxx-f434ba7b017f",
        "isEnabled": true,
        "type": "User",
        "userConsentDescription": "Allow the application to access SAML SSO for Bitbucket by resolution GmbH on your behalf.",
        "userConsentDisplayName": "Access SAML SSO for Bitbucket by resolution GmbH",
        "value": "user_impersonation"
      }
    ],
    "preAuthorizedApplications": []
  },
  "appRoles": [
    {
      "allowedMemberTypes": [ "User" ],
      "description": "msiam_access",
      "displayName": "msiam_access",
      "id": "xxxxxxxx-xxxx-xxxx-xxxx-2c6355321d55",
      "isEnabled": true,
      "origin": "Application",
      "value": null
    }
  ],
  "publicClient": { "redirectUris": [] },
  "info": {
    "termsOfServiceUrl": null,
    "supportUrl": null,
    "privacyStatementUrl": null,
    "marketingUrl": null,
    "logoUrl": "https://secure.aadcdn.microsoftonline-p.com/c1c6b6c8-ugrfrtjv0so5ofkk2h6reh-pajssvvffd-ccwghwns/appbranding/ovibbplm5xqvqcq-zht1z7zxk3gr-vyq3raaci-yoj4/1033/bannerlogo?ts=636727159738380290"
  },
  "keyCredentials": [],
  "parentalControlSettings": {
    "countriesBlockedForMinors": [],
    "legalAgeGroupRule": "Allow"
  },
  "passwordCredentials": [],
  "requiredResourceAccess": [],
  "web": {
    "redirectUris": [ "https://bitbucket.xxxxxxxxxx.io/plugins/servlet/samlsso", "https://*.lab.resolution.de/plugins/servlet/samlsso" ],
    "homePageUrl": "https://*.lab.resolution.de/plugins/servlet/samlsso?metadata=samlssoforbitbucketbyresolution|ISV9.2|primary|z",
    "logoutUrl": null,
    "implicitGrantSettings": {
      "enableIdTokenIssuance": true,
      "enableAccessTokenIssuance": false
    }
  }
}

Я бы ожидал поле флага или типа, но не смог найти ничего, что могло бы отличить элементы.

Эта ссылка документирует портал MyApps.

И здесь - документация конечной точки.

Буду благодарен за любую помощь, чтобы пролить свет на это.

...