AutoGRAPH.NET Service Auth — различия между версиями

Материал из TK
Перейти к: навигация, поиск
Строка 44: Строка 44:
 
Аутентификация выполняется вызовом метода Login, который возвращает токен. Данный токен должен передаваться в HTTP header всех остальных запросов. Примеры кода, для реализации работы с аутентификацией.
 
Аутентификация выполняется вызовом метода Login, который возвращает токен. Данный токен должен передаваться в HTTP header всех остальных запросов. Примеры кода, для реализации работы с аутентификацией.
   
WCF (Windows Communication Foundation)
+
== WCF (Windows Communication Foundation) ==
   
 
В этом режиме используется особенность библиотеки WCF с помощью behaviours extensions и message inspector's. Пример:
 
В этом режиме используется особенность библиотеки WCF с помощью behaviours extensions и message inspector's. Пример:
   
  +
<syntaxhighlight lang="csharp">This page contains the following errors:error on line 1 at column 325: Entity 'nbsp' not defined
var svc = new AutoGRAPHSvcClient();<br/>var bh = new AuthenticateEndpointBehavior();<br/>svc.Endpoint.Behaviors.Add(bh);<br/>bh.Token = svc.Login("demo", "demo");
 
  +
Below is a rendering of the page up to the first error.</syntaxhighlight>
   
  +
и далее все остальные методы не требуют дополнительных изменений для работы. Дополнительный файл с классами Helpers.cs прилагается в архиве.
<br/>var devices&nbsp;= svc.EnumDevices("DemoSchema");<br/>var geofences&nbsp;= svc.EnumGeofences("DemoSchema");
 
  +
  +
== JSON ==
  +
  +
В этом режиме делается запрос к методу Login для получения токена и устанавливается заголовок AG-TOKEN.
  +
  +
<syntaxhighlight lang="csharp">
  +
WebClient client = new WebClient();
  +
client.Headers["Content-Type"] = "application/json";
  +
client.Headers["AG-TOKEN"] = client.UploadString("http://localhost:8300/Login", "{\"UserName\":\"demo\",\"Password\":\"demo\"}").Trim('\"', '\"');
  +
  +
// далее обычная работа с JSON
  +
  +
client.DownloadString("http://localhost:8300/EnumSchemas");
  +
</syntaxhighlight>
   
 
и далее все остальные методы не требуют дополнительных изменений для работы.
 
и далее все остальные методы не требуют дополнительных изменений для работы.

Версия 14:14, 4 августа 2015

Режимы с аутентификацией

Если в .config-файле указаны параметры users-directory и devices-directory - работа сервиса немного видоизменяется. Основные отличия приведены ниже.

Отличие в логике работы Без аутентификации С аутентификацией пользователей
Аутентификация Не выполняется

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

Работа всех остальных методов без токена аутентификации невозможна.

Местоположение схем

в каталоге, на который указывает параметр common-directory

схемы общие для всех клиентов, которые выполняют запросы анонимно

в каталоге каждого пользователя (например {users-directory}\username1\Download - далее структуры каталогов должны соответствовать каталогу common-directory - т.е. иметь подкаталоги Schemes, Geofences, Devices, ...).

Пользователи не имеют доступа к схемам и прочим данных друг друга.

Проверка на доступность приборов клиентам доступны все приборы, которые есть в ключе сервера клиенту доступны только те приборы, которые заданы ему в его собственном каталоге DBF, вобщем те же приборы, которые доступны ему на сервере
Каталог данных общий

общий

Аутентификация

Аутентификация выполняется вызовом метода Login, который возвращает токен. Данный токен должен передаваться в HTTP header всех остальных запросов. Примеры кода, для реализации работы с аутентификацией.

WCF (Windows Communication Foundation)

В этом режиме используется особенность библиотеки WCF с помощью behaviours extensions и message inspector's. Пример:

This page contains the following errors:error on line 1 at column 325: Entity 'nbsp' not defined
Below is a rendering of the page up to the first error.

и далее все остальные методы не требуют дополнительных изменений для работы. Дополнительный файл с классами Helpers.cs прилагается в архиве.

JSON

В этом режиме делается запрос к методу Login для получения токена и устанавливается заголовок AG-TOKEN.

WebClient client = new WebClient();
client.Headers["Content-Type"] = "application/json";
client.Headers["AG-TOKEN"] = client.UploadString("http://localhost:8300/Login", "{\"UserName\":\"demo\",\"Password\":\"demo\"}").Trim('\"', '\"');

// далее обычная работа с JSON

client.DownloadString("http://localhost:8300/EnumSchemas");

и далее все остальные методы не требуют дополнительных изменений для работы.