Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Добавил возможность bearer-аутентификации #151

Merged
merged 2 commits into from
Oct 21, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -279,6 +279,14 @@ Json.Вставить("field2", "value2");
Результат = КоннекторHTTP.GetJson("https://user:[email protected]/basic-auth/user/pass");
```

## Bearer-аутентификация
Параметры bearer-аутентификации можно передать в параметре `ДополнительныеПараметры.Аутентификация`.
При этом `Тип` нужно установить в значение `Bearer` и задать свойство `Токен`.

```bsl
Аутентификация = Новый Структура("Токен, Тип", "exampleBearerToken_abc1234", "Bearer");
```

## Digest-аутентификация
Параметры Digest-аутентификации можно передать в параметре `ДополнительныеПараметры.Аутентификация`.
При этом `Тип` нужно установить в значение `Digest`.
Expand Down
15 changes: 15 additions & 0 deletions src/en/CommonModules/HTTPConnector/Ext/Module.bsl
Original file line number Diff line number Diff line change
Expand Up @@ -397,6 +397,8 @@ EndFunction
// If Type = Digest or Basic:
// ** User - String - user name.
// ** Password - String - user password.
// If Type = Bearer:
// ** Token - String - bearer token.
// If Type = AWS4-HMAC-SHA256:
// ** AccessKeyID - String - Access key ID.
// ** SecretKey - String - secret key.
Expand Down Expand Up @@ -1514,6 +1516,9 @@ Procedure PrepareAuthentication(PreparedRequest)
If AuthenticationType = "aws4-hmac-sha256" Then
PrepareAuthenticationAWS4(PreparedRequest);
EndIf;
If AuthenticationType = "bearer" Then
PrepareAuthenticationBearer(PreparedRequest);
EndIf;
EndIf;
EndIf;

Expand Down Expand Up @@ -2467,6 +2472,16 @@ EndFunction

#EndRegion

Procedure PrepareAuthenticationBearer(PreparedRequest)

If Not PreparedRequest.Authentication.Property("Token") Or Not ValueIsFilled(PreparedRequest.Authentication.Token) Then
// token is empty
Return;
EndIf;

PreparedRequest.Headers.Insert("Authorization", StrTemplate("Bearer %1", PreparedRequest.Authentication.Token));

EndProcedure
#Region EncodingDecodingData

#Region ServiceStructuresZip
Expand Down
38 changes: 36 additions & 2 deletions src/ru/CommonModules/КоннекторHTTP/Ext/Module.bsl
Original file line number Diff line number Diff line change
Expand Up @@ -487,6 +487,8 @@
// Если Тип = Digest или Basic:
// ** Пользователь - Строка - имя пользователя.
// ** Пароль - Строка - пароль пользователя.
// Если Тип = Bearer:
// ** Токен - Строка - токен.
// Если Тип = AWS4-HMAC-SHA256:
// ** ИдентификаторКлючаДоступа - Строка - идентификатор ключа доступа.
// ** СекретныйКлюч - Строка - секретный ключ.
Expand Down Expand Up @@ -613,6 +615,23 @@

КонецФункции

// Конструктор аутентификации Bearer
//
// Возвращаемое значение:
// Структура:
// * Тип - Строка - Код типа аутентификации. Всегда "Bearer".
// * Токен - Строка - Bearer-токен.
//
Функция НоваяАутентификацияBearer(Токен = "") Экспорт

Результат = Новый Структура;
Результат.Вставить("Тип", "Bearer");
Результат.Вставить("Токен", Токен);

Возврат Результат;

КонецФункции

// Конструктор аутентификации AWS4-HMAC-SHA256
//
// Возвращаемое значение:
Expand Down Expand Up @@ -1364,7 +1383,10 @@
ПодготовленныйЗапрос.СобытияНаОтвет.Добавить("ОбработкаОтветаСКодом401");
КонецЕсли;
Если ТипАутентификации = "aws4-hmac-sha256" Тогда
ПодготовитьАутентификациюAWS4(ПодготовленныйЗапрос);
ПодготовитьАутентификациюAWS4(ПодготовленныйЗапрос);
КонецЕсли;
Если ТипАутентификации = "bearer" Тогда
ПодготовитьАутентификациюBearer(ПодготовленныйЗапрос);
КонецЕсли;
КонецЕсли;
КонецЕсли;
Expand Down Expand Up @@ -2748,7 +2770,19 @@

КонецФункции

#КонецОбласти
#КонецОбласти

Процедура ПодготовитьАутентификациюBearer(ПодготовленныйЗапрос)

Если Не ПодготовленныйЗапрос.Аутентификация.Свойство("Токен") или не ЗначениеЗаполнено(ПодготовленныйЗапрос.Аутентификация.Токен) Тогда
// Токен не заполнен.
Возврат;
КонецЕсли;

ПодготовленныйЗапрос.Заголовки.Вставить("Authorization", СтрШаблон("Bearer %1", ПодготовленныйЗапрос.Аутентификация.Токен));

КонецПроцедуры


#Область КодированиеДекодированиеДанных

Expand Down
Loading