Пример конфигурации расширения аутентификатора
Используйте описанные ниже шаги для компоновки и создания манифеста расширения и реализации алгоритма стратегии аутентификации в методах обратного вызова расширения аутентификатора. Дополнительные сведения о создании пользовательских расширений в ThingWorx см. в разделе Расширяемость ThingWorx.
Компоновка
Можно использовать такие средства компоновки, как Ant или Gradle. В сценарии компоновки необходимо будет скомпилировать Java-класс, который реализует обратные вызовы метода аутентификатора (будет обсуждаться позже). Удостоверьтесь, что для компилирования используются библиотеки Thingworx-Extension-SDK-x.x.x (JAR-файлы), которые совместимы с версией Thingworx-Platform-x.x.x, используемой во время выполнения. Также не забудьте включить файл metadata.xml, который используется для регистрации расширения аутентификатора в ThingWorx при импорте ZIP-архива расширения.
Создание манифеста
1. Откройте файл configfiles/metadata.xml.
2. В элементе набора аутентификаторов (пример показан ниже) настройте следующие параметры требуемым образом:
<Entities>
<ExtensionPackages>
<ExtensionPackage name="Authenticators_Sample_BasicUser_ExtensionPackage"
description="Authenticators Sample BasicUser Extension Package"
vendor="ThingWorx"
packageVersion="1.0"
minimumThingWorxVersion="5.1.1">
<JarResources>
<FileResource type="JAR" file="auth-sample-basicuser-extension.jar" description="Authenticators Sample BasicUser JAR file." />
</JarResources>
</ExtensionPackage>
</ExtensionPackages>
<Authenticators>
<Authenticator name="SampleBasicUserAuthenticator"
className="com.thingworx.security.authentication.samples.SampleBasicUserAuthenticator"
description="Sample Authenticator that validates against the Thingworx User"
aspect.isEditableExtensionObject="true">
</Authenticator>
</Authenticators>
</Entities>
a. Authenticator name - отображается в Composer. Должно быть уникальным наименованием.
b. className - имя класса реализации, который используется ThingWorx для создания экземпляра реализации аутентификатора.
c. description - отображается в Composer.
d. aspect.isEditableExtensionObject - задайте значение true, чтобы разрешить сохранение включенных настроек приоритета в Composer. Этот параметр является обязательным.
3. Настройте имя jar-файла типа FileResource (см. ниже):
<FileResource type="JAR" file="auth-sample-basicuser-extension.jar"
description="Authenticators Sample BasicUser JAR file." /> name of jar file
4. Сохраните и закройте файл.
Реализация
Для реализации выполните описанные ниже шаги для соответствующего JAR-файла аутентификатора:
1. Используйте/расширьте класс CustomAuthenticator.
* 
Параметр SupportsSession разрешает поддержку сессии между запросами; по умолчанию задано значение true. Если не требуется поддерживать сессию между запросами, задайте значение false.
2. Примените конструктор по умолчанию.
3. Переопределите методы типа аутентификатора требуемым для реализации образом:
Метод
Описание
public boolean matchesAuthRequest(HttpServletRequest httpRequest)
throws AuthenticatorException,
Позволяет получать информацию из входящего запроса аутентификации, предоставляемую в виде параметра httpRequest. Чтобы указать, что запрос может быть обработан, возвращается значение true, в противном случае возвращается значение false. Если возвращается значение true, во время выполнения ThingWorx будет вызван метод аутентификации (см. ниже).

//… make SSO call or other algorithm to determine userName
public void authenticate(HttpServletRequest httpRequest, HttpServletResponse httpResponse)
{
// use validateThingworxUser to make sure the user is enabled and a Thingworx user
AuthenticationUtilities.validateThingworxUser(userName);
// Call setCredentials, so the Thingworx platform can provide the correct permissions and access to allowed content
this.setCredentials(userName);
}

// … or if not using SSO, but providing username and password
public void authenticate(HttpServletRequest httpRequest, HttpServletResponse httpResponse)
{
AuthenticationUtilities.validateCredentials(user, password);
this.setCredentials(user, password);
}
В случае стратегии аутентификации, в которой предоставляется только имя пользователя (например, SSO, где аутентификация пользователя выполняется в отдельном приложении), используйте первый набор validate и setCredentials, как показано в левом столбце.
В случае стратегии аутентификации, в которой предоставляются имя пользователя и пароль, используйте второй набор validate и setCredentials, как показано в левом столбце.
public void issueAuthenticationChallenge(HttpServletRequest httpRequest, HttpServletResponse httpResponse)
Сообщает об исключительной ситуации аутентификатора
Этот метод не всегда необходимо использовать. Однако если из метода аутентификации сообщено об исключительной ситуации или для флага RequiresChallenge установлено значение true, будет вызван метод issueAuthenticationchallenge.
Приоритизация аутентификаторов по умолчанию
Для системных аутентификаторов применяется следующая система приоритетов по умолчанию. Этот распределенный диапазон позволяет вставлять расширения аутентификаторов в цепочку обработки на промежуточном уровне, если требуется. Для этих аутентификаторов системных объектов невозможно переупорядочение, изменение приоритета, удаление или любое изменение.
ThingworxBasicAuthenticator - приоритет 100. Аутентификация по предоставляемому имени пользователя и паролю.
ThingworxMobileTokenAuthenticator - приоритет 150. Аутентификатор Mobile App Builder, который осуществляет проверку по мобильным маркерам ThingWorx.
* 
Этот аутентификатор предназначен для будущего выпуска и в настоящее время отключен.
ThingworxApplicationKeyAuthenticator - приоритет 200. Аутентификация по предоставляемому ключу приложения.
ThingworxFormAuthenticator - приоритет 300. Аутентификация посредством формы входа в систему.
ThingworxMobileAuthorizationAuthenticator - приоритет 350. Аутентификатор построителя мобильных приложений, который осуществляет проверку по именам пользователя и паролям ThingWorx.
* 
Этот аутентификатор предназначен для будущего выпуска и в настоящее время отключен.
ThingworxHttpBasicAuthenticator - приоритет 400. Базовая HTTP-аутентификация.
Развертывание пользовательского аутентификатора в Composer
1. В Composer щелкните Импорт/экспорт > Импорт.
2. Найдите файл <имя_ZIP-файла_расширения_аутентификатора>.zip.
3. Установите расширение.
4. В проводнике щелкните Аутентификаторы.
5. Откройте нужный аутентификатор.
6. В разделе Общая информация щелкните Включено.
* 
По умолчанию все аутентификаторы отключены.
7. Щелкните Сохранить.
Аутентификаторы во время выполнения
К расширению аутентификатора можно обратиться во время выполнения. Обычно самое низкоприоритетное значение обрабатывается сначала. При наличии двух аутентификаторов, которые имеют одинаковые значения приоритета и возвращают значение true в обратный вызов matchAuthenticationRequest, воздействие неопределенной упорядоченности приводит к неопределенности порядка обработки запросов во время выполнения. Поэтому для обеспечения известного порядка обработки запросов рекомендуется не использовать два пользовательских аутентификатора с одинаковыми значениями приоритета. Если аутентификатору не удается обработать запрос, очередь переходит к следующему аутентификатору в цепочке, и так до тех пор, пока аутентификация не будет выполнена. Если ни одному из пользовательских аутентификаторов не удалось обработать запрос, этот запрос будет обрабатываться системными аутентификаторами ThingWorx с возможным отображением формы входа в систему для ввода имени пользователя и пароля.
Обращение к аутентификаторам во время выполнения
Чтобы обратиться к аутентификатору во время выполнения, отправьте запрос на следующий URL-адрес и укажите параметры запроса или заголовка либо текст сообщения, который пользовательский аутентификатор сможет загрузить из пересылаемого объекта HTTP-запроса и обработать с использованием трех методов обратного вызова пользовательского аутентификатора, описанных ранее.
<сервер:порт>/Thingworx/Home
<хост:порт>/Thingworx/Home?YourParameter=something
См. также
Было ли это полезно?