OAuth-аутентификация - токен доступа с ошибкой JavaScript (политика CORS) - PullRequest
0 голосов
/ 10 марта 2020

Я встраиваю отчеты Power BI в другое приложение, используя JavaScript, и могу генерировать токен доступа (Barear), используя приведенный ниже код JavaScript, но он работает не во всех браузерах. Ниже показано сообщение об ошибке.

Доступ к XMLHttpRequest в 'https://login.microsoftonline.com/ <> / oauth2 / token' из источника 'null' был заблокирован политикой CORS: Ответ на запрос предварительной проверки не выполнен Не проходите проверку контроля доступа: на запрошенном ресурсе отсутствует заголовок «Access-Control-Allow-Origin».

Я добавил требуемые заголовки запроса, но результат все тот же.

	 var key;  
	 var request = new XMLHttpRequest(); 
    request.open("POST", "https://login.microsoftonline.com/<<tenant_id>>/oauth2/token", true); 
  
	request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	request.setRequestHeader('Access-Control-Allow-Headers', 'x-requested-with');
	request.setRequestHeader('Access-Control-Allow-Origin', '*');
    request.send("grant_type=client_credentials&client_id=<<clientid>>&client_secret=<<clientsecret>>&resource:<<resourceurl>>"); // specify the credentials to receive the token on request
    request.onreadystatechange = function () {
        if (request.readyState == request.DONE) {
            var response = request.responseText;
            var obj = JSON.parse(response); 
            key = obj.access_token; 
            token_ = key; 
        }
    }

Есть идеи?

Спасибо!

1 Ответ

1 голос
/ 11 марта 2020

Вы никогда не должны помещать секрет клиента в интерфейс.

Мы предлагаем вам использовать azure -activedirectory-library-for- js для интерфейса, чтобы легко интегрировать AAD. Подробнее см. В заголовке Нет заголовка «Access-Control-Allow-Origin» с Microsoft Online Auth .

client_credentials grant_type используется только в сценарии приложения. Если вы должны использовать поток учетных данных клиента, вам нужно получить токен доступа в бэкэнде вашего приложения и вернуть его во внешний интерфейс.

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