Как заставить пример MS Identity SPA работать для организаций и личных учетных записей - PullRequest
0 голосов
/ 25 апреля 2020

Я следую по этой ссылке , чтобы создать свой собственный проект.

В моем проекте

  1. Reactjs

  2. Asp. Net Core Web Api

для доступа к электронной почте пользователя из Hotmail. Приложение Reactjs и WebApi живут на разных серверах.

Пример - почти то, что мне нужно, но он принимает только учетные записи в пределах одной организации, но не принимает Личные учетные записи.

Я думал, что мне нужно только изменить идентификатор арендатора с указанного c идентификатора на " общие »в связанных конфигурациях, и это будет работать. Я также зарегистрировал поддерживаемые типы учетных записей на Azure для Web Api и Reactjs, чтобы использовать

AnyOrg + Личный аккаунт enter image description here

enter image description here

вот конфиг для Angular

{
  "auth": {
    "clientId": "28xxx12",
    "authority": "https://login.microsoftonline.com/common",
    "validateAuthority": true,
    "redirectUri": "http://localhost:4200",
    "postLogoutRedirectUri": "https://localhost:44321/signout-oidc",
    "navigateToLoginRequestUrl": true
  },
    "cache": {
        "cacheLocation": "localStorage"
    },
  "scopes": {
    "loginRequest": [ "openid", "profile", "Mail.Read", "offline_access", "user.read"]
  },
    "resources": {
      "todoListApi": {
        "resourceUri": "https://localhost:44351/api/todolist/",
        "resourceScope": "https://papayee008.onmicrosoft.com/papayee008/access_as_user"
      }
    }     
}

вот конфиг для Web Api:

{
  "AzureAd": {
    "Instance": "https://login.microsoftonline.com/",
    "Domain": "papayee008.onmicrosoft.com",
    "TenantId": "common",
    "ClientId": "28xxx12"
  },
  "https_port": 44351,
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft": "Warning",
      "Microsoft.Hosting.Lifetime": "Information"
    }
  },
  "AllowedHosts": "*"
}

Но когда я был при попытке войти в личный кабинет выдает ошибку: enter image description here

1 Ответ

1 голос
/ 27 апреля 2020

Самое простое решение - использовать один и тот же идентификатор приложения / клиента как для SPA, так и для API. То есть вместо того, чтобы делать отдельные регистрации приложений для каждого компонента (как предлагается в файле readme), просто сделайте одну регистрацию приложения, в которой вы объедините шаги для Регистрация приложения службы (TodoListAPI) и Регистрация клиентское приложение (TodoListSPA) в файле readme примера репозитория.

РЕДАКТИРОВАТЬ: судя по последнему снимку экрана, возможно, вы также изменили «поддерживаемые типы учетных записей» на портале AAD еще не вступили в силу. Обычно задержка составляет несколько секунд, и если вы попытаетесь войти в систему с личным аккаунтом в течение этого времени, проблема на снимке экрана будет ожидаемой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...