HTTP-аутентификация
gsqlcmd поддерживает следующие методы HTTP-аутентификации:
Используйте опцию /auth, чтобы указать метод.
Например, используйте метод None для запроса с пустым заголовком авторизации:
gsqlcmd download https://localhost/crm/contacts /auth=None
Метод по умолчанию - Авто.
Используйте опцию /interactive, чтобы разрешить авторизацию запроса в интерактивном режиме.
Например:
gsqlcmd download https://localhost/crm/contacts /interactive
Вы можете использовать опции /options, /clientJson, /serviceJson и /tokenJson для загрузки параметров аутентификации из JSON или текстовых файлов.
Например, команда с аутентификацией OAuth2 может выглядеть так
gsqlcmd download https://localhost/crm/contacts /clientJson=client.json /serviceJson=service.txt /tokenJson=token.json
Все параметры можно разместить в одном файле. Например:
gsqlcmd download https://localhost/crm/contacts /options=options.txt
Однако первый подход позволяет разделить параметры клиента и службы и обновлять файл token.json при обновлении токена.
Ниже вы найдете советы по конкретным методам аутентификации.
Базовая аутентификация
Для метода аутентификации Basic требуется имя пользователя и пароль.
Например:
gsqlcmd download https://localhost/crm/contacts /auth=basic /username=user /password=pass
Вы можете опустить опцию /auth=basic, так как gsqlcmd автоматически определяет эту схему аутентификации.
Аутентификация Windows
Вы можете использовать метод проверки подлинности Windows с учетными данными пользователя Windows по умолчанию или с указанным именем пользователя и паролем.
Например:
gsqlcmd download https://localhost/crm/contacts /auth=windows gsqlcmd download https://localhost/crm/contacts /auth=windows /username=user /password=pass
В имени пользователя можно указать домен. Например:
gsqlcmd download https://localhost/crm/contacts /auth=windows /username=domain/user /password=pass
Вы можете опустить опцию /auth=windows, так как gsqlcmd автоматически определяет схему аутентификации Windows.
Аутентификация с помощью форм
Вы можете использовать имя пользователя и пароль, если служба поддерживает проверку подлинности Forms.
Например:
gsqlcmd download https://localhost/crm/contacts /auth=forms /username=user /password=pass
В противном случае вы можете использовать интерактивный режим, как показано выше, или указать куки авторизации.
Например:
gsqlcmd download https://localhost/crm/contacts /auth=forms /cookie=.ASPXFORMSAUTH=D3A...
Вы можете найти такие файлы cookie в инструментах разработчика браузера.
Лучшим вариантом является размещение файла cookie в файле и использование опции /cookieFile.
В этом случае gsqlcmd самостоятельно обновляет cookie в заданном файле.
Например:
gsqlcmd download https://localhost/crm/contacts /auth=forms /cookieFile=cookie.txt
Вы можете использовать опцию /cookieFile с любым режимом проверки подлинности с помощью форм, чтобы сохранить полученный файл cookie.
Вы можете опустить параметр /auth=forms, так как gsqlcmd в большинстве случаев успешно определяет схему аутентификации с помощью форм.
Когда указаны имя пользователя и пароль, gsqlcmd определяет URL авторизации. В некоторых случаях утилита не может определить его правильно.
В этом случае укажите корневой URL службы в опции /authorizationUrl.
Например:
gsqlcmd download https://localhost/crm/contacts /auth=forms /username=user /password=pass /authorizationUrl=https://localhost/crm/
Аутентификация OAuth2
Если у вас есть токен доступа, вы можете использовать простую форму, подобную этой
gsqlcmd download https://localhost/crm/contacts /auth=oauth2 /tokenType=Bearer /accessToken=token
Эта форма эквивалентна запросу:
gsqlcmd download https://localhost/crm/contacts "/header=Authorization: Bearer token"
Если вам необходимо сначала получить токен, а затем обновлять его, необходимо настроить параметры метода OAuth2.
gsqlcmd имеет достаточный набор опций для настройки любых конкретных требований.
Мы рекомендуем разделить параметры на три файла и использовать их в любой команде с аутентификацией OAuth2. Например:
gsqlcmd ... /clientJson=client.json /serviceJson=service.json /tokenJson=token.json ...
Вы можете использовать следующие режимы gsqlcmd с аутентификацией OAuth2:
- download, convert, import
- get-token
- refresh-token
- revoke-token
Сначала используйте режим get-token, чтобы получить токен доступа. В качестве альтернативы используйте опцию /interactive в режимах download, convert или import.
Используйте режим refresh-token для явного обновления токена. Обычно это действие не требуется, так как gsqlcmd автоматически обновляет токены при необходимости.
Используйте режим revoke-token, чтобы отозвать токен.
Пример конфигурации Zoho CRM
Ниже приведен полный пример файлов конфигурации для Zoho CRM.
Рекомендуемое содержимое файла service.txt:
authorization_url_format={authorization_url}?scope={scope}&client_id={client_id}&response_type=code&access_type=offline&redirect_uri={redirect_uri} authorization_url=https://accounts.zoho.com/oauth/v2/auth get_token_url_format={accounts-server}/oauth/v2/token get_token_body_format=grant_type=authorization_code&client_id={client_id}&client_secret={client_secret}&redirect_uri={redirect_uri}&code={code} refresh_token_url_format={accounts-server}/oauth/v2/token?refresh_token={refresh_token}&client_id={client_id}&client_secret={client_secret}&grant_type=refresh_token refresh_token_body_format= revoke_token_url_format={accounts-server}/oauth/v2/token/revoke?token={refresh_token} revoke_token_body_format=
Файл содержит параметры gsqlcmd, такие как /authorization_url_format, /authorization_url и так далее.
Файл содержит определение форматов URL и тела запроса для каждой операции get-token, refresh-token и revoke-token, а также получения первоначальной авторизации.
Форматы содержат переменные в фигурных скобках, которые получают значения из других опций gsqlcmd, указанных в командной строке или загружаемых из файлов.
Вы можете найти эти значения в документации по сервису, например, https://www.zoho.com/crm/developer/docs/api/v2/oauth-overview.html для Zoho CRM.
Рекомендуемое содержимое файла client.txt:
client_id=1000... client_secret=93a... redirect_uri=https://www... scope=ZohoCRM.modules.ALL
Форматы файла service.txt используют значения из этого файла.
Значения клиента получаются при регистрации приложения.
Например, посмотрите https://www.zoho.com/crm/developer/docs/api/v2/register-client.html для Zoho CRM.
Выберите тип мобильного приложения при регистрации приложения в Zoho CRM.
Когда вы настроили параметры клиента и службы, получите токен с помощью команды, подобной этой
gsqlcmd get-token /clientJson=client.txt /serviceJson=service.txt /tokenJson=token.json
gsqlcmd откроет браузер для авторизации приложения, а затем получит токены доступа и обновления.
Утилита сохранит токен в файле token.json, который для Zoho CRM выглядит следующим образом:
{ "location":"us", "accounts-server":"https://accounts.zoho.com", "valid_to":"2021-03-10T00:36:15.850Z", "access_token":"1000.ee9764918066eb3a9ee2b58c00ed4737.28c820e4ef4400000000000000000741", "refresh_token":"1000.cedae4432cd94039e2a402bf29bc293b.17906477b8c900000000000000000071", "api_domain":"https://www.zohoapis.com", "token_type":"Bearer", "expires_in":"3600" }
Вы можете видеть значения, подходящие для опций gsqlcmd, таких как /tokenType и /accessToken, которые обсуждались выше.
Кроме того, можно видеть специфичные для службы значения, такие как location, accounts-server и api_domain (которые также используются в service.txt).
gsqlcmd автоматически обнаруживает такие значения и сохраняет их в файле токенов.
Список полей можно определить явно, используя опцию /tokenFields.
Когда вы получили токен, вы можете загрузить данные с помощью такой команды:
gsqlcmd download https://www.zohoapis.com/crm/v2/Contacts contacts.json /clientJson=client.txt /serviceJson=service.txt /tokenJson=token.json
Или вы можете загрузить и преобразовать данные с помощью такой команды:
gsqlcmd convert "SELECT Email, First_Name AS FirstName, LastName AS LastName FROM https://www.zohoapis.com/crm/v2/Contacts" contacts.csv ^ /clientJson=client.txt /serviceJson=service.txt /tokenJson=token.json
Пример конфигурации Google Search Console
Ниже приведен более простой пример файлов конфигурации для Google Search Console.
Создайте идентификатор клиента OAuth типа настольного приложения на странице https://console.cloud.google.com/apis/credentials/oauthclient.
Сохраните учетные данные клиента в формате JSON, используя ссылку "DOWNLOAD JSON", и переименуйте его в client.json.
Содержимое файла выглядит так:
{"installed":{ "client_id":"586418743564-9p0vq6cq8nmjmhgucsm0000000000000.apps.googleusercontent.com", "project_id":"searchconsoleapi-000000", "auth_uri":"https://accounts.google.com/o/oauth2/auth", "token_uri":"https://oauth2.googleapis.com/token", "auth_provider_x509_cert_url":"https://www.googleapis.com/oauth2/v1/certs", "client_secret":"Aii500000000000000000FCB", "redirect_uris":["urn:ietf:wg:oauth:2.0:oob","https://localhost"] }}
Файл содержит полную конфигурацию службы, включая учетные данные клиентского приложения.
gsqlcmd использует token_uri в качестве значения по умолчанию для опций /getTokenUrl и /requestTokenUrl.
Кроме того, gsqlcmd использует стандартные форматы URL и тела запроса OAuth2, которых достаточно для Google.
На втором шаге получить токен можно с помощью команды:
gsqlcmd get-token /clientJson=client.json /tokenJson=token.json
Затем используйте любой режим для загрузки, преобразования или импорта данных из Google Search Console с помощью команды со следующими опциями:
gsqlcmd ... /clientJson=client.json /tokenJson=token.json
См. подробности на странице https://developers.google.com/webmaster-tools/v1/searchanalytics/query.
Аутентификация OAuth1
Чтобы авторизовать запрос по двух-шаговой схеме OAuth1, укажите опции /consumerKey и /consumerSecret.
Например:
gsqlcmd download https://localhost/crm/contacts /consumerKey=app /consumerSecret=appSecret
Опция /auth=OAuth1 является необязательным.
Чтобы авторизовать запросы с помощью трех-шаговой схемы OAuth1, вначале следует получить токен доступа.
Вы можете создать файл client.txt со следующим содержимым и заполнить значения в соответствии с сервисной документацией и вашим зарегистрированным приложением.
consumer_key= consumer_secret= callback= request_token_url= authorization_url= access_token_url=
Затем получите токен доступа с помощью команды:
gsqlcmd get-token /clientJson=client.txt /tokenJson=token.json
Затем используйте любой запрос для загрузки, преобразования или импорта данных из службы, используя команду, подобную этой:
gsqlcmd ... /clientJson=client.json /tokenJson=token.json
Специфические методы аутентификации
Вы можете использовать настраиваемый метод аутентификации для аутентификации запросов с использованием параметров URL, заголовков авторизации и файлов cookie.
Например:
gsqlcmd download https://localhost/crm/contacts /urlParameters=api_key=key "/authorizationHeader=Bearer token" /cookieFile=cookie.txt
Этот метод может быть проще для нескольких сервисов.
Например, https://data.nasdaq.com/ бесплатно публикует множество данных. Для запросов требуется ключ API в URL-адресе.