Как настроить аутентификацию Open ID connect MS Azure AD для 1С в 2023 году

31.10.23

Администрирование - Информационная безопасность

Некоторые дополнения к инструкции на ИТС и как настроить Open ID аутентификацию из Azure AD в 1С.
  1. При настройке аутентификации OpenID connect через MS Azure AD возникли некоторые нюансы, которые возникают при настройке по статье с ИТС:
{
   "name": "azure_oidc",
   "title": "OIDC 1C (Azure)",
   "discovery": "https://login.microsoftonline.com/*******-****-****-****-********/v2.0/.well-known/openid-configuration",
   "authenticationClaimName": "upn",
   "clientconfig": {
   "authority": "https://login.microsoftonline.com/*******-****-****-****-********",
   "client_id": "********-****-****-****-**********",
   "redirect_uri": "https://mydomain/testbasename/authform.html",
   "post_logout_redirect_uri": "https://mydomain/testbasename/exit.html",
   "endSessionEndpoint": "https://login.microsoftonline.com/********-****-****-****-**********/oauth2/v2.0/logout",
   "scope": "openid email",
   "response_type": "id_token token",
   "filterProtocolClaims": false,
   "loadUserInfo": false,
   "resource": "********-****-****-****-**********"
   }
}

 

 Здесь в ("authority": "https://login.microsoftonline.com/<tenant>/oauth2")  необходимо заменить на ("authority": "https://login.microsoftonline.com/<tenant>",)

 

  1. Получение списка пользователей из Azure AD в 1С:
Function GetAzureData() 
    
    Table = New ValueTable;
    
    client_id = "********-****-****-****-**********";
    client_secret = "W_FBbaYsaxvhyJcVtVINCYdj2r_wNrff8Q~7sREg";
    tenant_id = "********-****-****-****-**********";
    
    grant_type = "client_credentials";
    server = "login.microsoftonline.com";
    url = "/" + tenant_id +"/oauth2/v2.0/token";
    scope = "https://graph.microsoft.com/.default";
    payload = "grant_type=" + grant_type + "&client_id=" + client_id + "&client_secret=" + client_secret + "&scope=" + scope;
    headers = "{'Content-Type': 'application/x-www-form-urlencoded'}";
    
    HTTPRequest = New HTTPRequest(url);
    HTTPRequest.SetBodyFromString(payload);
    HTTPRequest.Headers.Insert("Content-Type", "application/x-www-form-urlencoded");  
    
    ssl = New OpenSSLSecureConnection();
    HTTPConnection = New HTTPConnection(server,,,,,100,ssl); 
    ResponseHTTP = HTTPConnection.Post(HTTPRequest);
    If ResponseHTTP.StatusCode = 200 Then 
        ResponseStruct = SimpleReadeJSON(ResponseHTTP.GetBodyAsString(TextEncoding.UTF8));
        access_token = ResponseStruct.access_token;   
        HTTPRequest = New HTTPRequest("/v1.0/users");
        HTTPRequest.Headers.Insert("Authorization", "Bearer " + access_token);
        HTTPConnection = Новый HTTPConnection("graph.microsoft.com",,,,,100,ssl);
        ResponseHTTP = HTTPConnection.Get(HTTPRequest);
        ResponseStruct = SimpleReadeJSON(StrReplace(ResponseHTTP.GetBodyAsString(TextEncoding.UTF8),"@odata.context","odatacontext")); 
        
        Table.Columns.Add("name");
        Table.Columns.Add("mail");
        Table.Columns.Add("title");
        Table.Columns.Add("mobile");
        Table.Columns.Add("department");
        Table.Columns.Add("postOfficeBox");
        Table.Columns.Add("company");
        Table.Columns.Add("createTimestamp");
        Table.Columns.Add("modifyTimestamp");
        Table.Columns.Add("userAccountControl");
        Table.Columns.Add("userPrincipalName");
        Table.Columns.Add("displayName");
        Table.Columns.Add("uSNCreated");
        
        
        For Each item in ResponseStruct.Value Do 
            Line = Table.Add();
            Line.name                 = item.givenName;
            Line.mail                 = item.mail;
            Line.title                 = item.jobTitle; 
            Line.mobile             = item.mobilePhone;
            Line.department         = item.officeLocation;
            Line.postOfficeBox      = "";
            Line.company            = item.officeLocation;
            Line.createTimestamp     = "";
            Line.modifyTimestamp     = "";
            Line.userAccountControl = item.id;
            Line.uSNCreated            = item.id;
            Line.userPrincipalName     = item.userPrincipalName;
            Line.displayName         = item.displayName;
        EndDo;
        
    Else 
        //make error
    EndIf;
   
    
    Return Table;
    
EndFunction  

Function SimpleReadeJSON(Data)
    
    JSONReader = New JSONReader;
    JSONReader.SetString(Data);          
    Return ReadJSON(JSONReader);
    

EndFunction

 

Здесь самым основным моментом является то, что в Azure там же, где и регистрировали приложение (см. статью с ИТС), нужно создать client_secret для этого приложения, а затем этому приложению нужно выдать права на "graph", где указать чтение данных пользователей.

См. также

Информационная безопасность Системный администратор Программист Платные (руб)

AUTO VPN (portable) - автоматизация подключения пользователей к удаленному рабочему месту или сети посредством создания автоматического VPN (L2TP или L2TP/IPSEC и т.д.) подключения без ввода настроек пользователем (с возможностью скрытия этих настроек от пользователя). Программа автоматически выполняет подключение к VPN серверу и после успешного коннекта , если необходимо, подключение к серверу удаленных рабочих столов (RDP).

1200 руб.

24.03.2020    15364    25    32    

35

Информационная безопасность Программист Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

Предлагается внешняя обработка для просмотра данных в формате ASN1. Есть 2 режима: загрузка из бинарного формата и из BASE64. Реализована функция извлечения всех сертификатов, которые можно найти в ASN1-файле. В дополнении к этому продукту предлагается методическая помощь по вопросам, связанным с технической реализацией криптографии и шифрования в 1С.

2400 руб.

29.08.2016    30053    9    1    

10

Информационная безопасность Пароли Платформа 1С v8.3 Бесплатно (free)

Все еще храните пароли в базе? Тогда мы идем к вам! Безопасное и надежное хранение секретов. JWT авторизация. Удобный интерфейс. Демо конфигурация. Бесплатно.

30.05.2024    6209    kamisov    17    

60

Информационная безопасность Программист Платформа 1С v8.3 Бесплатно (free)

Рассмотрим в статье более подробную и последовательную настройку аутентификации в 1С с использованием распространенной технологии JWT, которая пришла в программу в платформе версии 8.3.21.1302.

27.02.2024    7313    PROSTO-1C    10    

39

Информационная безопасность Программист Платформа 1С v8.3 Абонемент ($m)

Интеграционные решения стали неотъемлемой частью нашей жизни. Правилом хорошего тона в современных приложениях является не давать интегратору доступ к чувствительным данным. Device flow позволяет аутентифицировать пользователя, не показывая приложению чувствительные данные (например: логин и пароль)<br> Рассмотрим Device flow аутентификацию, в приложении, на примере OpenID провайдера Yandex.

1 стартмани

27.10.2023    2409    platonov.e    1    

23

Информационная безопасность Системный администратор Платформа 1С v8.3 Конфигурации 1cv8 Россия Абонемент ($m)

Продукты на основе решений 1С уверенной поступью захватывают рынок учётных систем в стране. Широкое распространение программ всегда порождает большой интерес к ним со стороны злоумышленников, а пользователь 1С это одна из дверей в защищённый информационный контур предприятия. Обработка позволяет быстро и комплексно оценить настройки безопасности конкретной базы и возможности пользователя этой базы на сервере. Также можно оценить некоторые аспекты сетевой безопасности предприятия со стороны сервера 1С.

5 стартмани

24.04.2023    6252    20    soulner    8    

32

Информационная безопасность Системный администратор Программист Платформа 1С v8.3 1С:ERP Управление предприятием 2 Абонемент ($m)

1С, начиная с версии платформы 8.3.21, добавили в систему возможность двойной аутентификации. Как это работает: в пользователе информационной базы появилось свойство «Аутентификация токеном доступа» (АутентификацияТокеномДоступа во встроенном языке), если установить этот признак и осуществить ряд манипуляций на встроенном языке, то появляется возможность при аутентификации отправлять HTTP запросы, которые и реализуют этот самый второй фактор. Данное расширение позволяет организовать двухфакторную аутентификацию с помощью электронной почты или мессенджера Telegram.

2 стартмани

08.12.2022    7278    50    Silenser    12    

24
Оставьте свое сообщение