Я использую MSAL. js для входа в систему и использования Graph API.
Созданное мной приложение Azure AD является мультитенантным и имеет правильные разрешения при работе с определенным арендатором, чтобы я мог подтвердить, что это работает.
Препятствие в том, что я хочу иметь возможность * l 1035 * через всех наших арендаторов для получения любых данных, доступных в API графа.
Я попытался просто изменить конфигурацию соединения MSAL, однако это не удалось и будет использовать существующее значение authority
при каждом вызове.
После этого я создал массив forEach
с tenantid
для этого до l oop, однако это дало тот же результат.
Я создал функцию выхода из системы, которая вызывалась каждый раз, однако она хочет перенаправить вас со своей страницы на адрес выхода из системы.
Мой код:
function config_app(tenantid, callback, apiUrl) {
var applicationConfig = {
auth: {
clientId: "XXXX-XXXX-XXXX-XXXX",
authority: "https://login.microsoftonline.com/" + tenantid,
redirectUri: "https://my.redirecturi.com/fake"
},
cache: {
cacheLocation: "sessionStorage",
storeAuthStateInCookie: false
}
};
var msalInstance = new Msal.UserAgentApplication(applicationConfig);
callback(tenantid, applicationConfig, msalInstance, callMSGraph, apiUrl);
}
function sign_in(tenantid, applicationConfig, msalInstance, callback, apiUrl) {
var scopes = {
scopes: ["Organization.Read.All"],
loginHint: "my@email.com"
};
msalInstance.acquireTokenSilent(scopes).then(response => {
callback(response.accessToken, graphAPICallback, apiUrl);
}).catch(err => {
});
}
function callMSGraph(accessToken, callback, apiUrl) {
console.log("calling ms graph");
var xmlHttp = new XMLHttpRequest();
xmlHttp.onreadystatechange = function () {
if (this.readyState == 4 && this.status == 200)
callback(JSON.parse(this.responseText));
}
xmlHttp.open("GET", "https://graph.microsoft.com/v1.0/" + apiUrl, true);
xmlHttp.setRequestHeader('Authorization', 'Bearer ' + accessToken);
xmlHttp.send();
}
function graphAPICallback(data) {
$('#o365res').append(JSON.stringify(data, null, 2));
}
config_app('XXX-XXX-XXX-XXX-XXX', sign_in, 'organization');
Я попытался добавить несколько идентификаторов арендаторов в массив и l oop, используя:
var clients = ['XXX-XXX-XXX-XXX-XXX','YYYY-YYYY-YYYY-YYYY'];
clients.forEach(function(e) {
config_app(e, sign_in, 'organization');
});
После длительного чтения кажется, что я не может использовать функцию выхода из системы без перенаправление, я бы предпочел просто изменить арендатора через значение authority
и в любом случае перепрыгнуть с тем же токеном.
Я использую MSAL v1.2.0
I ' Я надеюсь вытащить все данные Организации от наших арендаторов для отображения на одной странице, а затем расширить их, чтобы получить безопасные оценки и любые другие ценные данные из API.
Спасибо