CreateOAuthState

Синтаксис

CreateOAuthStateResult CreateOAuthState(CreateOAuthStateArg tArg)

Параметры

tArg. Параметры выполнения операции.

Описание

Операция CreateOAuthState получает адрес сервиса аутентификации, по которому будет выполнен запрос на аутентификацию пользователя.

Комментарии

Для выполнения операции укажите в поле tArg.svcKey ключ сервиса аутентификации, а в поле tArg.redirectUri путь до корня веб-приложения, который будет использоваться в качестве адреса возврата в приложение после ввода учётных данных пользователя на внешнем сервисе. Ключ сервиса аутентификации может быть получен в результате выполнения операции GetOAuthSettings.

Результатом выполнения операции будет адрес сервиса аутентификации, который задан в настройках сервиса в реестре/файле settings.xml в поле AuthUrl, дополненный адресом возврата из tArg.redirectUri и сгенерированным параметром state для защиты от потенциальных атак типа CSRF при получении кода авторизации. Для получения подробной информации обратитесь к разделу «Настройка аутентификации через внешние сервисы».

Пользователь должен быть перенаправлен по полученному адресу для ввода учётных данных. При успешной аутентификации внешний сервис осуществляет обратное перенаправление в веб-приложение по адресу, который был задан в поле tArg.redirectUri с указанием параметров code и state.

Пример

Ниже приведён пример получения адреса внешнего сервиса аутентификации. В запросе передаётся ключ сервиса аутентификации и путь до веб-приложения, по которому будет осуществляться возврат. В ответе возвращается сформированный адрес.

SOAP-запрос:

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<CreateOAuthState xmlns="http://www.fsight.ru/PP.SOM.Som">
<tArg xmlns="">
  <svcKey>0</svcKey>
  <redirectUri>https://myserver.com/FP_App_v10.x/r/#/redirect</redirectUri>
  </tArg>
  </CreateOAuthState>
  </s:Body>
  </s:Envelope>

SOAP-ответ:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Body>
<CreateOAuthStateResult xmlns="http://www.fsight.ru/PP.SOM.Som" xmlns:q1="http://www.fsight.ru/PP.SOM.Som" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <authUrl xmlns="">https://accounts.google.com/o/oauth2/auth/authorize?client_id=214433571309-nl9btulcqc3u05d8128uaei3fjrdni8r.apps.googleusercontent.com&response_type=code&access_type=offline&scope=https%3A//www.googleapis.com/auth/userinfo.profile&response_mode=query&redirect_uri=https://myserver.com/FP_App_v10.x/r/#/redirect&state=F52991C98C3F4543992414C9B89CD19A</authUrl>
  </CreateOAuthStateResult>
  </soapenv:Body>
  </soapenv:Envelope>

JSON-запрос:

{
"CreateOAuthState" :
{
"tArg" :
{
"svcKey" : "0",
"redirectUri" : "https:\/\/myserver.com\/FP_App_v10.x\/r\/#\/redirect"
}
}
}

JSON-ответ:

{
"CreateOAuthStateResult" :
{
"authUrl" : "https://accounts.google.com/o/oauth2/auth/authorize?client_id=214433571309-nl9btulcqc3u05d8128uaei3fjrdni8r.apps.googleusercontent.com&response_type=code&access_type=offline&scope=https%3A//www.googleapis.com/auth/userinfo.profile&response_mode=query&redirect_uri=https://myserver.com/FP_App_v10.x/r/#/redirect&state=F52991C98C3F4543992414C9B89CD19A"
}
}
public static CreateOAuthStateResult CreateOAuthState(uint key, string redirect)
{
var somClient = new SomPortTypeClient(); // Прокси-объект для выполнения операций
// Параметры выполнения операции
var tCreate = new CreateOAuthState()
{
tArg = new CreateOAuthStateArg()
{
svcKey = key,
redirectUri = redirect
}
};
// Получение адреса сервиса аутентификации
var result = somClient.CreateOAuthState(tCreate);
return result;
}

См. также:

Работа с репозиторием