Как войти в приложение Azure с пользователем из другого арендатора? - PullRequest
0 голосов
/ 26 февраля 2019

Я создал приложение в Active Directory через «Регистрация приложений (предварительный просмотр)» и использую библиотеку аутентификации Microsoft (MSAL.js) для входа в приложение.Приложение будет выполнять вызовы API с областью действия user_impersonation, поэтому я включил это в приложении.

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

Однако, когда я делаю запрос на вход в приложение с учетной записью, которая не является пользователемв клиенте приложений я получаю сообщение об ошибке: «Выбранная учетная запись пользователя не существует в клиенте« MyTenant »и не может получить доступ к приложению« MyApplicationID »в этом клиенте.Сначала необходимо добавить учетную запись в качестве внешнего пользователя в клиенте.Пожалуйста, используйте другую учетную запись. '

Я использую следующий javascript для совершения звонка:

var applicationConfig = {
    clientID: "MYCLIENTID",
    authority: "https://login.microsoftonline.com/MYTENANTID",
    graphScopes: ["https://management.azure.com/user_impersonation"],
    graphEndpoint: "https://graph.microsoft.com/v1.0/me"
};

var headers = new Headers();

var userAgentApplication = new Msal.UserAgentApplication(applicationConfig.clientID, applicationConfig.authority, tokenReceivedCallback);

function clicked(){
    console.log('clicked');
    userAgentApplication.loginPopup(applicationConfig.graphScopes).then(function (idToken) {
        userAgentApplication.acquireTokenSilent(applicationConfig.graphScopes).then(function (accessToken) {
            var bearer = "Bearer " + accessToken;
            headers.append("Authorization", bearer);
            var options = {
                method: "GET",
                headers: headers
            };
            var endpoint = "https://management.azure.com/subscriptions?api-version=2016-06-01";
            fetch(endpoint, options).then(function (response) {
                var body = response.body;
            });
        }, function (error) {
        });
    }, function (error) {
        //login failure
    });
}

Есть ли что-то, что мне не хватает, чтобы заставить это работать, или я неправильно понимаю'Параметр AzureADandPersonalMicrosoftAccount '?

Ответы [ 2 ]

0 голосов
/ 27 февраля 2019

Если вы хотите, чтобы пользователь из разных арендаторов входил в ваше приложение, вы должны зарегистрировать мультитенантное приложение в Azure AD.Для более подробной информации, пожалуйста, обратитесь к документу .Между тем, вам нужно указать свои полномочия как https://login.microsoftonline.com/common/v2.0.

0 голосов
/ 26 февраля 2019

Вы указали свои права доступа: https://login.microsoftonline.com/MYTENANTID.

Вам необходимо указать его как https://login.microsoftonline.com/organizations/v2.0, это позволяет любой учетной записи войти в систему.

Это позволяет пользователям из любого AzureКлиент AD для входа в систему. Обратите внимание, что мы не можем использовать общие, так как вы хотите получить доступ к API-интерфейсам Azure.

Если вы укажете идентификатор клиента, то только пользователи из этого клиента должны иметь возможность войти в систему.

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