UiPath Microsoft График Аутентификация - PullRequest
0 голосов
/ 08 апреля 2020

Я использую UiPath для автоматизации процессов в нашей компании. Поскольку UiPath поддерживает Do tNet Framework, я пытаюсь отправить запрос REST из UiPath в наш Rest API, который работает на Azure.

. Для создания запроса мне, следовательно, необходимо аутентифицировать пользователя с помощью Microsoft Graph Authenticator. Поскольку я очень новичок в онлайн-сервисах, я беру информацию отсюда (https://docs.microsoft.com/en-us/graph/auth-v2-user). Поскольку я использую UiPath, я не могу использовать какие-либо функции, поэтому у меня есть 2 действия, которые создают запрос аутентификации для генерации кода аутентификации. После этого код аутентификации используется для генерации моего токена доступа.

Проблема в том, что UiPath изначально не открывает диалог аутентификации, когда я хочу получить свой код аутентификации. Есть ли способ принудительно открыть Microsoft Graph Authenticator и вернуть код аутентификации в UiPath?

Мои действия выглядят так:

var authCodeClient = new RestClient("https://login.microsoftonline.com/{tenant-id}/oauth2/authorize?resource={resource-id}");
var authCodeRequest = new RestRequest(Method.POST);
authCodeRequest.AddHeader("Content-Type", "application/x-www-form-urlencoded");

authCodeRequest.AddParameter("client_id", "{client-id}");
authCodeRequest.AddParameter("redirect_uri", "{callback-uri}");
authCodeRequest.AddParameter("response_mode", "query");
authCodeRequest.AddParameter("response_type", "code");

IRestResponse authCodeResponse= authCodeClient.Execute(authCodeRequest);
Code = authCodeResponse.Content.Code;
Console.WriteLine(Code);

И:

var tokenClient = new RestClient("https://login.microsoftonline.com/{tenant-id}/oauth2/v2.0/token");
var tokenRequest = new RestRequest(Method.POST);
tokenRequest.AddHeader("Content-Type", "application/x-www-form-urlencoded");
tokenRequest.AddHeader("Host", "login.microsoftonline.com");

tokenRequest.AddParameter("client_id", "{client-id}");
tokenRequest.AddParameter("code", Code);
tokenRequest.AddParameter("redirect_uri", "{callback-uri}");
tokenRequest.AddParameter("client_secret", "{client-secret}");
tokenRequest.AddParameter("grant_type", "authorization_code");


IRestResponse token = tokenClient.Execute(tokenRequest);
dynamic data = JObject.Parse(token.Content);
Bearer = data.access_token;
Console.WriteLine(Bearer);

В настоящее время Ответ от первого действия возвращает HTML для Аутентификации, но я не нашел способа напрямую отобразить эту информацию И вернуть необходимый код. Запрос работает в Postman, поэтому единственная проблема, с которой я столкнулся, - это интеграция в UiPath.

Для справки: этот (https://connect.uipath.com/marketplace/components/microsoft-office-365-669054) компонент не поддерживает вызовы API таким способом.

Надеюсь, кто-нибудь может мне помочь, спасибо!

...