Будет ли приложение автоматически проходить аутентификацию, если оно зарегистрировано в различных клиентах на Azure? - PullRequest
0 голосов
/ 06 ноября 2018

Я создал 2 приложения локально на своем ноутбуке, зарегистрировал их на Azure B2C Ad как 2 отдельных приложения. Также оба приложения имеют отдельную политику входа и регистрации.

Когда я успешно захожу в одно приложение A и обновляю страницу в приложении B, я также вижу себя вошедшим в систему.

Таким образом, вход в приложение A также приводит меня к автоматическому входу в приложение B [и я не понимаю, как, но это то, что происходит ...]

Мой вопрос заключается в том, будет ли это поведение преобладать, если приложения зарегистрированы в разных арендаторах, если нет, что я подозреваю, то есть ли способ заставить это работать?

К сожалению, у меня недостаточно доступа к нескольким арендаторам, чтобы проверить это.

1 Ответ

0 голосов
/ 06 ноября 2018

Приложения в Azure B2C используются для регистрации приложений, которые могут интегрироваться с вашим каталогом. После успешной аутентификации не имеет значения, с помощью какого приложения вы вошли в систему.

Если вы хотите контролировать доступ, вам нужно использовать функциональность API Access / Scopes. (Приложения> Опубликованные области)

Для проверки областей действия:

  1. Перейдите в приложение 1 и выберите опубликованные области. Создайте новую область под названием «App1» (или как хотите).
  2. Зайдите в App2 и выберите доступ к API. Добавьте новый доступ к API и выберите только что добавленную область. Обратите внимание, что важно не редактировать существующие области, так как это может повлиять на сервисы B2C.
  3. Область теперь будет включена в токен пользователя при вашей аутентификации, который может быть проверен при проверке токена пользователя. Например:

    public const string ScopeElement = "http://schemas.microsoft.com/identity/claims/scope";

    защищенный bool CheckHasRequiredScopes (разрешение String) { if (ClaimsPrincipal.Current! = null && ClaimsPrincipal.Current.FindFirst (ScopeElement)! = null) { return (ClaimsPrincipal.Current.FindFirst (Config.ScopeElement) .Value.Contains (разрешение));
    } * * Тысяча двадцать-один

        return false;
    }
    

«разрешение» - это имя области, которую вы хотите проверить.

Что касается вашего вопроса - отдельный арендатор - это отдельный каталог, и поэтому пользователь НЕ будет входить в это приложение. Вы можете создать другой каталог, который будет реплицировать сценарий, если вы хотите протестировать его (вам не нужно иметь другую подписку Azure).

Более подробная информация доступна здесь MSDN Link

...