Javascript AzureAd Потребляет Отдых Служба - PullRequest
0 голосов
/ 20 июня 2019

RestAPI : у меня есть API отдыха, выполняющий Asp Core с аутентификацией AzureAd.

WebApp : у меня есть отдельное веб-приложение, выполняющее Asp Core в качестве бэкэнда, с Javascriptfrontend.

Бэкэнд WebApp проходит проверку подлинности через AzureAd, а затем с помощью RestAPI, чтобы проверить, зарегистрирован ли пользователь.

Я хочу, чтобы клиент JavaScript мог использоватьОстальное API напрямую.Как я должен идти об этом, не выставляя маркер доступа?

Я мог бы пойти об отправке запроса из Javascript в WebApp Backend -> Rest API.Но я действительно хочу избежать этого из-за ненужного кода.

1 Ответ

1 голос
/ 21 июня 2019

В этом сценарии вы можете попытаться реализовать ADAL для js в своем клиенте JS. Используя **adal**, вы получите токен аутентификации, и при вызове вашего Web Api он добавит заголовок аутентификации в HTTP-запросах.

Е.Г.

Предположим, мы хотим вызвать API-интерфейс Microsoft Graph из нашего JS-клиента. Мы разрабатываем сценарий node.js, который использует запрос для вызова API-интерфейса Microsoft Graph для групп для создания новой группы безопасности.

Следующий код показывает, как API используется из этого скрипта. Обратите внимание, что токен и имя передаются параметром. Кроме того, эта функция возвращает Обещание, которое успешно разрешено, когда группа создана правильно, и отклонено, если это не так.

var request = require('request');

function createGroup(token, name) {
  return new Promise((resolve, reject) => {
    const options = {
      method: 'POST',
      url: 'https://graph.microsoft.com/v1.0/groups/',
      headers: {
        'Authorization': 'Bearer ' + token,
        'content-type': 'application/json'
      },
      body: JSON.stringify({
        "displayName": name,
        "mailEnabled": false,
        "securityEnabled": true
      })
    };

    request(options, (error, response, body) => {
      const result = JSON.parse(body);
      if (!error && response.statusCode == 204) {
        resolve(result.value);
      } else {
        reject(result);
      }
    });
  });
}

Чтобы вызвать Microsoft Graph API, нам нужно было пройти аутентификацию, и поэтому в предыдущем разделе у нас был токен в качестве параметра функции, которая использовалась для выполнения запроса.

мы должны добавить следующий код для генерации токена. Обратите внимание, что мы используем пакет adal npm, чтобы сделать это проще, вызывая метод acquTokenWithClientCredentials объекта AuthenticationContext. Кроме того, у нас есть некоторые константы, которые необходимо обновить с помощью идентификатора клиента и секрета, полученных ранее, а также имени арендатора.

var adal = require('adal-node');

const TENANT = "{tenant-name-here}.onmicrosoft.com";
const CLIENT_ID = "{Application-id-here}";
const CLIENT_SECRET = "{Application-key-here}";

function getToken() {
  return new Promise((resolve, reject) => {
    const authContext = new adal.AuthenticationContext(`https://login.microsoftonline.com/${TENANT}`);
    authContext.acquireTokenWithClientCredentials(GRAPH_URL, CLIENT_ID, CLIENT_SECRET, (err, tokenRes) => {
      if (err) { reject(err); }
      resolve(tokenRes.accessToken);
    });
  });

Надеюсь, это поможет.

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