Могу ли я использовать SAML для предоставления доступа к Kaseya API без использования пароля? - PullRequest
0 голосов
/ 29 мая 2019

Клиент A имеет учетную запись в KaseyaBMS. SaaS Provider B имеет приложение, которое может записывать комментарии в учетную запись Kaseya Клиента A, используя их API, детализированный здесь: https://bmsemea.kaseya.com/api

Существует два способа доступа к API: имя пользователя и пароль или ответ SAML. Компания A не счастлива от необходимости передавать свое имя пользователя и пароль Б. Касея не предоставляет модель доступа в стиле OAuth, по крайней мере, для этого API.

Я создал приложение в OneLogin (поставщик единого входа), которое предоставляет доступ к Kaseya без использования учетных данных клиента. В той же учетной записи OneLogin есть другое приложение, которое клиент может использовать для входа в систему B таким же образом.

Касея ожидает ответа SAML, содержащего название компании и адрес электронной почты. OneLogin предоставляет конечную точку API для генерации этого ответа SAML: https://developers.onelogin.com/api-docs/1/saml-assertions/generate-saml-assertion

Но ожидается, что ему будут предоставлены имя пользователя и пароль [для учетной записи Клиента A в OneLogin]. Похоже, что это просто сдвигает требование передать u / p A для Kaseya на B на передачу OneLogin u / p A на B - комбинация, которая все еще позволит B войти в Kaseya.

На данный момент у меня есть последовательность вызовов API.

  1. Используйте идентификатор и секретный ключ клиента OneLogin (из приложения в OL) для вызова https://api.us.onelogin.com/auth/oauth2/token и получения токена доступа для OL (https://developers.onelogin.com/api-docs/1/oauth20-tokens/generate-tokens)
  2. Используйте токен, возвращенный в 1, для генерации подтверждения SAML с помощью https://api.us.onelogin.com/api/1/saml_assertion (https://developers.onelogin.com/api-docs/1/saml-assertions/generate-saml-assertion)
  3. Отправьте ответ SAML от 2 до https://bmsemea.kaseya.com/api/token, чтобы получить токен доступа для API KaseyaBMS.

Проблема в том, что на шаге 2 необходимо указать имя пользователя и пароль в запросе, что мне не нужно, поскольку у меня уже есть доступ к OneLogin с использованием секретной информации, предоставленной мне OneLogin.

Возможно ли то, что я пытаюсь сделать, или я совершенно неправильно понимаю технологию?

Еще одна проблема заключается в том, что Клиент А может не использовать OneLogin в качестве поставщика единого входа. Я предполагаю, что любой другой поставщик единого входа, который я собираюсь реализовать, будет иметь аналогичные системы для добавления настраиваемых полей в утверждения, поэтому OL должен подходить для целей разработки.

...