Автоматизация доступа к SharePoint Online для внешних пользователей через Flow / Azure

Я новичок в SharePoint / Azure / PowerShell, поэтому извиняюсь, если то, что я задаю, является глупым вопросом!

В настоящее время у нас есть клиентские сайты SharePoint, размещенные на нашем клиенте O365, с доступом к каждому сайту, который вскоре будет развернут для каждого из наших клиентов. Первоначально доступ к сайтам будет иметь только высшее руководство каждого клиента, однако со временем, вероятно, мы добавим и всех остальных; Чтобы упростить новый пользовательский процесс и избавить нас от необходимости добавлять каждого отдельного сотрудника, мы рассматривали возможность использования потока для автоматизации доступа пользователей вместо этого с целью добавления прошедших проверку подлинности внешних пользователей без особого реального участия администраторов, кроме простого процесс утверждения / отклонения.

Общий план выглядит следующим образом:

Структура Visio ‹
 введите описание изображения здесь

  1. На каждом клиентском сайте есть настраиваемый список SharePoint под названием «Список доступа сотрудников». Указанный список будет содержать следующие столбцы: идентификатор запроса (текст), имя (текст), фамилия (текст), должность (текст), компания (текст), контактный номер (текст), электронная почта (текст), Доступ к SharePoint (да / нет логическое значение).
  2. Если сотруднику требуется доступ к сайту SharePoint, его соответствующий менеджер добавит сотрудника в список и заполнит все вышеперечисленные поля, установив для элемента «Доступ к SharePoint» значение «Да».
  3. Это запустит поток и отправит электронное письмо с подтверждением мне и другому администратору с указанием пользователя, который будет создан, и того, кто отправил запрос.
  4. Каким-то образом вставка скрипта - это будет выполняться, если запрос будет одобрен, и предоставит пользователю доступ.
  5. Уведомление по электронной почте автоматически отправляется создателю элемента списка SharePoint, уведомляя его о том, что теперь у пользователя есть доступ.

Шаг 4 - это то, где я немного застрял в том, что делать, если запрос одобрен - я написал небольшой сценарий PowerShell ниже, который почти достигает того, что я собираюсь, в том, что он создает группу PnP внешнего пользователя и определение роли PnP (если его еще нет), извлекает то, что находится в полях «Электронная почта» в списке «Доступ сотрудников», и запускает Add-PnPUsertoGroup, чтобы перенаправить пользователей в группу PnP, которая затем отправляет пользователей электронное письмо со ссылкой на сайт SharePoint, позволяющей им получить к нему доступ. Тем не мение:

  • Сценарий, который я написал, нацелен на всех в списке SharePoint, тогда как в идеале я бы просто хотел, чтобы сценарий был нацелен на единственного пользователя, который был недавно добавлен в список / указан в электронном письме с утверждением, и только на них. Я предполагаю, что мне придется передавать информацию из потока в скрипт, что я даже не уверен, что это возможно, и если это так, я понятия не имею, как это сделать.
  • Я знаю, что функции Azure и службу автоматизации Azure можно использовать для вставки скриптов в потоки, но у меня нет опыта ни в том, ни в другом, поэтому я не уверен, какой вариант более подходящий. Есть ли какие-либо рекомендации о том, как вставлять с ними сценарии PowerShell и как передать то, что находится в потоке, в указанные сценарии?

Сценарий PowerShell следующим образом:

введите здесь описание изображения

Надеюсь, все это имеет смысл - любые рекомендации будут оценены.

Спасибо!

РЕДАКТИРОВАТЬ: Так же, как немного дополнительной информации, вот текущий поток:

Часть потока 1

Flow Part 2

Часть потока 3


person Guero    schedule 04.06.2019    source источник


Ответы (1)


С тех пор мы нашли ответ на вышеизложенное - хотя функции / автоматизация Azure являются вариантом, они не обязательно нужны вам или сценарии PowerShell, запускаемые из Flow, в этом случае мой целевой сценарий был достигнут с использованием API приглашения MS Graph, разрешений приложений и вместо этого вызов HTTP SharePoint.

Смотрите прикрепленные скриншоты:

Ответ потока 1

Ответ потока 2

Ответ потока 3

Шаг 1. Настройте приложение с разрешениями для звонков в MS Graph - используйте это руководство, чтобы узнать, как это сделать - http://blogopaxio.azurewebsites.net/accessing-graph-api-from-microsoft-flow-using-application-permissions-2/

Шаг 2: Добавьте HTTP в MS Graph и установите параметры, как на снимке экрана 1 этого сообщения - это действие создаст гостя и URL-адрес приглашения, который пользователю потребуется для входа на сайт.

Шаг 3: На этом этапе запустите поток, чтобы мы могли получить «invitRedeemURL» из тела выходных данных для шага HTTP - вам понадобится этот конкретный URL-адрес для отдельной отправки в вашем электронном письме конечному пользователю.

Шаг 4: Сделайте паузу на минуту или две, чтобы убедиться, что информация из предыдущих действий «прилипла» - при условии, что все работает, на этом этапе пользователь фактически создаст свою гостевую учетную запись, и вы будете могут видеть их в разделе «Пользователи» в вашем центре администрирования O365, однако они еще не знают о доступе к своей учетной записи (мы уведомим их об этом в конце нашего электронного письма).

Шаг 5: Добавьте пользователя в группу безопасности SharePoint с помощью действия «Отправить HTTP-запрос в SharePoint». Обратите внимание, что «sitegroups (19)» в URI этого действия относится к номеру идентификатора группы PnP, в которую вы их добавляете, поэтому в моем случае идентификатор группы был 19. Если вы не уверены в идентификаторе вашей группы, подключитесь к своему сайту SharePoint через PowerShell с помощью команд PnP, затем запустите Get-PnPGroup.

Шаг 6. Отправьте электронное письмо приглашенному пользователю с помощью действия Outlook «Отправить электронное письмо» - к сведению - переменная «SharePoint Site» на моем снимке экрана на самом деле является «invitRedeemURL».

Надеюсь, это поможет всем, кто не знает, как это сделать. Если у кого-то есть лучшее решение, которое позволяет добиться этого, обязательно опубликуйте его!

Спасибо!

person Guero    schedule 07.06.2019