Ошибка протокола openid

В сервисе 1cfresh.com применяется удобная и надежная система аутентификации пользователей, основанная на технологии OpenID. Благодаря этой технологии, после ввода логина и пароля на любом ресурсе сервиса вы сможете входить без повторного ввода логина и пароля во все компоненты сервиса 1cfresh.com:

  • приложения сервиса;
  • сайт сервиса;
  • форум сервиса;
  • личный кабинет (менеджер сервиса);

а также на сайт Информационно-технологического сопровождения («1С:ИТС»).

Это делает работу с сервисом 1cfresh.com более комфортной для пользователей.

Где хранятся данные OpenID-аутентификации пользователя

Если пользователь вошел в сервис 1cfresh.com, то данные об этом запоминаются в виде cookie для того компьютера и того клиентского приложения (браузера или тонкого клиента «1С:Предприятия 8»), с помощью которых пользователь ввел логин и пароль. В cookie содержится срок годности — 24 часа.

Поэтому если пользователь в течение 24 часов с момента ввода логина и пароля войдет на любой ресурс сервиса 1cfresh.com или на сайт 1С:ИТС с того же компьютера, используя то же клиентское приложение (браузер или тонкий клиент), то ему не придется снова вводить логин или пароль.

Как завершить сеанс работы с сервисом и сбросить данные OpenID-аутентификации

Если к вашим приложениям могут иметь доступ другие лица, то желательно позаботиться о том, чтобы они не могли войти с вашего компьютера в сервис 1cfresh.com от вашего имени. Для этого перед завершением работы с сервисом 1cfresh.com необходимо сбросить данные OpenID-аутентификации в сервисе, например:

  • нажать на сайте сервиса гиперссылку
    Выйти
    :

  • или нажать в любом приложении сервиса кнопку Сервис и настройки (Сервис и настройки) в правом верхнем углу окна приложения, и затем выбрать команду меню ФайлЗавершить работу пользователя…
  • или нажать в строке заголовка приложения надпись с именем пользователя, а в выведенном окошке нажать гиперссылку Завершить работу:

О других способах сброса данных OpenID-аутентификации в сервисе 1cfresh.com можно прочесть в статье по ссылке.

Если вы не желаете пользоваться OpenID-аутентификацией

С приложениями сервиса можно работать и без использования OpenID-аутентификации:

  1. Для вызова приложения сервиса с помощью браузера без использования OpenID-аутентификации можно вызвать приложение по прямой ссылке, добавив после номера приложения (области данных) символы
    ?oida-

    Для входа в личный кабинет с помощью браузера без использования OpenID-аутентификации следует использовать адрес
    https://1cfresh.com/a/adm/?oida-

    Для удобства такие ссылки на приложения и личный кабинет сервиса можно добавить в закладки браузера.

  2. При использовании тонкого клиента можно настроить автоматическое добавление приложений сервиса в список информационных баз тонкого клиента, так чтобы при их вызове не использовалась OpenID-аутентификация. Как это сделать, описано в статье по ссылке.
  3. При использовании тонкого клиента также можно добавить приложение сервиса в список информационных баз тонкого клиента вручную, как описано в статье по ссылке, указав при добавлении в поле Дополнительные параметры запуска значение
    /OIDA-
    .

См. также:

  

_stay true_

14.09.16 — 09:27

Здравствуйте. Есть три базы с идентичнымы списками пользователей(логины, пароли, права)

Юзеры планируют работать в веб морде.

Хотим попробовать настроить так, чтобы авторизовавшись во «входной» базе, в две другие заходили без ввода логина и пароля.

Перерыл кучу статей в сети, включая итс. Опубликовал «входную» базу с галкой «использовать в качестве провайдера OpenID». Две другие опебликовал с галками «Использовать OpenID-аутентификацию и в поле с адресом провайдера указал как в инструкции: http://127.0.0.1/mybase//e1cib/oid2op

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

<?xml version=»1.0″ encoding=»UTF-8″?>

<xrds:XRDS xmlns:xrds=»xri://$xrds» xmlns=»xri://$xrd*($v*2.0)»>

<XRD>

<Service priority=’0′>

<Type>http://specs.openid.net/auth/2.0/server</Type>;

<URI>http://127.0.0.1/mybase/e1cib/oid2op</URI>;

</Service>

</XRD>

</xrds:XRDS>

Ни в какую не хочет появляться окно OpenID-аутентификации. Только стандартное окно 1С.

платформа 8.3.8.2054 + сервер 1С(x64), веб-сервер Apache 2.4.4(x64)

Кто настраивал подобное — поделитесь мудростью.

  

_stay true_

1 — 14.09.16 — 09:29

  

_stay true_

2 — 14.09.16 — 10:11

Ну блин, выручайте((

  

_stay true_

3 — 14.09.16 — 10:22

Где же все остроумные гении типа «позовите специалиста» или «тебе этого делать не нужно»?)) А то скучно

  

xafavute

4 — 14.09.16 — 10:24

все сервера на 1 компе?

  

_stay true_

5 — 14.09.16 — 10:24

(4) Да, я пока локально на своём играюсь с win7 x64

  

_stay true_

6 — 14.09.16 — 10:25

Все три публикации доступны по 127.0.0.1/mybase или Localhost/mybase

Пробовал ru_RU в конец добавлять — безрезультатно.

  

_stay true_

7 — 14.09.16 — 10:31

Ещё наблюдал, что базы, в публикации которых указана ссылка на провайдер, при запуске по веб-морде долго «висят», а потом появляется окно 1С-аутентификации. Установка юзеру галки «Аутентификации OpenID» не дала результатов

  

xafavute

8 — 14.09.16 — 10:36

может это?

Если OpenID-провайдер требует интерактивной аутентификации (происходит первое обращение или истекло время жизни признака аутентифицированности), клиент отображает диалог для ввода имени и пароля пользователя.

Аутентификация происходит по списку пользователей информационной базы OpenID-провайдера.

  

xafavute

9 — 14.09.16 — 10:36

добавь в базу openid тестового пользователя и проверь

  

_stay true_

10 — 14.09.16 — 10:38

(9) Пробую

  

xafavute

11 — 14.09.16 — 10:40

также включи тж по exeption

  

xafavute

12 — 14.09.16 — 10:40

еще нашел

Возможно, дело в том, что вы пытаетесь работать c OpenID провайдером по протоколу http.

Это следует из того, что в файле oid2op указан адрес OpenID провайдера с протоколом http.

<URI>http://msk-s3-arm065/sm/e1cib/oid2op</URI>;

В то время как в документации по 1С:Предприятию сказано (Руководство администратора, приложение 3, п. 3.16.8.2):

ВНИМАНИЕ! Взаимодействие с OpenID-провайдером осуществляется только по HTTPS-соединению.

  

xafavute

13 — 14.09.16 — 10:41

  

_stay true_

14 — 14.09.16 — 10:44

(12) Поднимаем Apache 2.4.4(x64) с SSL. Будем пробовать.

  

Мыш

15 — 14.09.16 — 11:01

ОпенИД не делал, но доменную авторизацию заборол. Но на ИИС.

  

_stay true_

16 — 19.09.16 — 10:51

Не получилось.

Настроили SSL как

http://adminsnotes.blogspot.ru/2008/01/apache-openssl-windows.html

В браузере стучится в базу по https://localhost:443/mybase

Ссылка на провайдер стала такой:

https://localhost:443/mybase/e1cib/oid2op

default.vrd базы провайдера Openid

<?xml version=»1.0″ encoding=»UTF-8″?>

<point xmlns=»http://v8.1c.ru/8.2/virtual-resource-system»;

        xmlns:xs=»http://www.w3.org/2001/XMLSchema»;

        xmlns:xsi=»http://www.w3.org/2001/XMLSchema-instance»;

        base=»/SPPR»

        ib=»File=&quot;D:KULESHOV_K_OSPPR_FILE&quot;;»

        enableStandardOData=»true»

        temp=»D:wwwtmp»>

    <ws publishExtensionsByDefault=»true»>

        <point name=»EnterpriseDataExchange_1_0_1_1″

                alias=»EnterpriseDataExchange_1_0_1_1.1cws»

                enable=»true»/>

        <point name=»EnterpriseDataUpload_1_0_1_1″

                alias=»EnterpriseDataUpload_1_0_1_1.1cws»

                enable=»true»/>

        <point name=»ErrorsExchange»

                alias=»ErrorsExchange.1cws»

                enable=»true»/>

        <point name=»Exchange»

                alias=»exchange.1cws»

                enable=»true»/>

        <point name=»Exchange_2_0_1_6″

                alias=»exchange_2_0_1_6.1cws»

                enable=»true»/>

        <point name=»FunctionModel»

                alias=»FunctionModel.1cws»

                enable=»true»/>

        <point name=»InterfaceVersion»

                alias=»InterfaceVersion.1cws»

                enable=»true»/>

    </ws>

    <httpServices publishExtensionsByDefault=»true»/>

    <openid>

        <provider>

            <lifetime>604800</lifetime>

        </provider>

    </openid>

</point>

default.vrd базы со ссылкой на провайдер openid:

<?xml version=»1.0″ encoding=»UTF-8″?>

<point xmlns=»http://v8.1c.ru/8.2/virtual-resource-system»;

        xmlns:xs=»http://www.w3.org/2001/XMLSchema»;

        xmlns:xsi=»http://www.w3.org/2001/XMLSchema-instance»;

        base=»/DMC_WEB»

        ib=»File=&quot;D:KULESHOV_K_ODMC_WEB&quot;;»

        enableStandardOData=»true»>

    <httpServices publishByDefault=»false»/>

    <ws>

        <point name=»AddressSystem»

                alias=»AddressSystem.1cws»

                enable=»true»/>

        <point name=»DMMessageService»

                alias=»dmmessage.1cws»

                enable=»true»/>

        <point name=»DMService»

                alias=»dm.1cws»

                enable=»true»/>

        <point name=»DMX»

                alias=»DMX.1cws»

                enable=»true»/>

        <point name=»EnterpriseDataExchange_1_0_1_1″

                alias=»EnterpriseDataExchange_1_0_1_1.1cws»

                enable=»true»/>

        <point name=»EnterpriseDataUpload_1_0_1_1″

                alias=»EnterpriseDataUpload_1_0_1_1.1cws»

                enable=»true»/>

        <point name=»Exchange»

                alias=»exchange.1cws»

                enable=»true»/>

        <point name=»Exchange_2_0_1_6″

                alias=»exchange_2_0_1_6.1cws»

                enable=»true»/>

        <point name=»Files»

                alias=»files.1cws»

                enable=»true»/>

        <point name=»InterfaceVersion»

                alias=»InterfaceVersion.1cws»

                enable=»true»/>

        <point name=»MEDO»

                alias=»medo.1cws»

                enable=»true»/>

        <point name=»MEDO1C»

                alias=»medo1c.1cws»

                enable=»true»/>

        <point name=»MobileDMVersionService»

                alias=»mobileDMVersionService.1cws»

                enable=»true»/>

        <point name=»MEDO2013″

                alias=»medo2013.1cws»

                enable=»true»/>

    </ws>

    <openid>

        <rely url=»https://localhost:443/SPPR//e1cib/oid2op»/>;

    </openid>

</point>

И содержимое файла oid2op

<?xml version=»1.0″ encoding=»UTF-8″?>

<xrds:XRDS xmlns:xrds=»xri://$xrds» xmlns=»xri://$xrd*($v*2.0)»>

<XRD>

<Service priority=’0′>

<Type>http://specs.openid.net/auth/2.0/server</Type>;;

<URI>https://localhost:443/mybase/e1cib/oid2op</URI>;;

</Service>

</XRD>

</xrds:XRDS>

Всё-равно вылезает стандартное окно 1С-аутентификации.

  

_stay true_

17 — 19.09.16 — 10:53

  

xafavute

18 — 19.09.16 — 11:00

(17) Сертификаты для https как настраивал?

  

xafavute

19 — 19.09.16 — 11:00

сама ссылкка в браузере открывается?

  

arsik

20 — 19.09.16 — 11:03

А попробуй в настройках не локалхост указать, а нормальный,внешний, айпишник.

  

_stay true_

21 — 19.09.16 — 11:08

(18) сертификаты как описано в статье в (16)

http://adminsnotes.blogspot.ru/2008/01/apache-openssl-windows.html

В командной строке прописывали нужные команды. Всё как по инструкции

(20) Сейчас попробую.

  

arsik

22 — 19.09.16 — 11:10

+ (20) Клиент возможно пытается на 127.0.0.1 искать openid сервер.

  

_stay true_

23 — 19.09.16 — 11:16

(22) я первый раз такое пытаюсь поднять: разве openid-сервером в данном случае не выступает база 1С?

  

xafavute

24 — 19.09.16 — 11:22

  

_stay true_

25 — 19.09.16 — 11:27

(24) Да. Скачивается файлик. Как в статье на ITS описано.

<?xml version=»1.0″ encoding=»UTF-8″?>

<xrds:XRDS xmlns:xrds=»xri://$xrds» xmlns=»xri://$xrd*($v*2.0)»>

<XRD>

<Service priority=’0′>

<Type>http://specs.openid.net/auth/2.0/server</Type>;;;

<URI>https://localhost:443/mybase/e1cib/oid2op</URI>;;;

</Service>

</XRD>

</xrds:XRDS>

  

_stay true_

26 — 19.09.16 — 15:25

Если через тонкий клиент и выставить параметр запуска /OIDA+, то такая ошибка лезет:

«1с ошибка подключения к openid провайдеру https://localhost:443/mybase/e1cib/oid2op»; и предлагает повторить попытку подключения

Через браузер даже окошко OpenID-аутентификации не лезет.

Может, чего с юзерами намудрил? В базе-провайдере: создал админа с полными правами и ролью администратор системы, поставил галку «Аутентификация 1С: предприятия» и галку «Аутентификация OpenID». Во второй базе, где указана ссылка на провайдер OpenID, просто создал юзера с таким же логином и правами, но выставил только галку «Аутентификация OpneID».

  

_stay true_

27 — 19.09.16 — 15:48

Если просто без ввода пароля нажать вход, то получаем ошибку: «Ошибка OpenID-аутентификации пользователя(Тонкий клиент).

Что за бяка-кака(((

  

arsik

28 — 19.09.16 — 18:30

Внешний айпишник указывал? У тебя клиент пытается на локалхосте найти опенайди сервер.

  

xafavute

29 — 19.09.16 — 18:34

(26) Ты уже выяснил чей список показывается: свой или чужой?

  

xafavute

30 — 19.09.16 — 18:35

И в тж что пишется?

  

xafavute

31 — 19.09.16 — 18:35

попробуй полный собрать

  

xafavute

32 — 19.09.16 — 18:36

ну и платформу не ниже 8.3.8.2027

  

_stay true_

33 — 20.09.16 — 08:36

(28) Внешний айпи не указывал, ибо пока тестирую всё на рабочем компе.

(29) В тонком клиенте в окне OpenID-аутентификации не отображаются пользователи в списке вообще. Приходится руками писать имя и пароль. Если вводишь корректные данные — ругается, что ошибка соедигнения с сервером OpenID, если оставляешь пароль пустым — вылетает ошибка «Ошибка OpenID аутентификации(тонкий клиент)

(32) Платформа 8.3.8.1933+сервер x64

(31) Не совсем понял.

(30) В ТЖ вот что вижу:

Statistics: RecordsScanned = 1, ParseTime = 0, ExecuteTime = 0, BuffersMemory = 32988, ResultRecords = 1, RecordSize = 731′,Rows=1

28:59.980006-0,SYSTEM,0,process=httpd,level=TRACE,component=vrsbase,class=OID2Log,line=281,file=srcVResourceOpenID2Impl.cpp,threadId=4184,func=RequestCookies::setCookie,Msg=set cookie,Name=vrs_oid2op_auth,Value=’OpenID:20160920042859:9f6a9aee-ba45-4104-919a-5c161bf1edf8:gpJlceZT/y6QRXQEVcRMe7nlPHdTgWus2RJmM9ogOwc=’

28:59.980007-0,SYSTEM,0,process=httpd,level=TRACE,component=vrsbase,class=OID2Log,line=2027,file=srcVResourceOpenID2Impl.cpp,threadId=4184,func=process_oid2op_request,OP=auth OK

28:59.995001-0,SYSTEM,0,process=httpd,level=TRACE,component=vrsbase,class=OID2Log,line=1128,file=srcVResourceOpenID2Impl.cpp,threadId=2212,func=process_oid2rp_request,RP=request received

28:59.995002-0,SYSTEM,0,process=httpd,level=TRACE,component=vrsbase,class=OID2Log,line=1409,file=srcVResourceOpenID2Impl.cpp,threadId=2212,func=process_oid2rp_request,RPCommand=init

28:59.995003-0,SYSTEM,0,process=httpd,level=TRACE,component=vrsbase,class=OID2Log,line=1413,file=srcVResourceOpenID2Impl.cpp,threadId=2212,func=process_oid2rp_request,RP=init command

28:59.995004-0,SYSTEM,0,process=httpd,level=TRACE,component=vrsbase,class=OID2Log,line=281,file=srcVResourceOpenID2Impl.cpp,threadId=2212,func=RequestCookies::setCookie,Msg=set cookie,Name=vrs_nooida,Value=

28:59.995005-0,SYSTEM,0,process=httpd,level=TRACE,component=vrsbase,class=OID2Log,line=281,file=srcVResourceOpenID2Impl.cpp,threadId=2212,func=RequestCookies::setCookie,Msg=set cookie,Name=vrs_oid2rp_sii,Value=966271582496286583:3393608938:1CV8C:

28:59.995006-0,SYSTEM,0,process=httpd,level=TRACE,component=vrsbase,class=OID2Log,line=2578,file=srcVResourceOpenID2Impl.cpp,threadId=2212,func=performDiscovery,RP=open https://localhost:443/SPPR/e1cib/oid2op

29:00.011000-0,SYSTEM,0,process=httpd,level=TRACE,component=vrsbase,class=OID2Log,line=2584,file=srcVResourceOpenID2Impl.cpp,threadId=2212,func=performDiscovery,RP XRDS parsing=downloading and parsing

29:00.026000-0,EXCP,0,process=httpd,Exception=9db1fa37-b455-4f3f-b8dd-7de0ea7d6da3,Descr=»srcLibxml2_Intf.cpp(136):

9db1fa37-b455-4f3f-b8dd-7de0ea7d6da3: Ошибка доступа к файлу ‘https://localhost:443/SPPR/e1cib/oid2op’: srcHTTPImpl.cpp(2559):

896db6ac-cc39-4065-8298-1bf5fccb9d98: Ошибка работы с Интернет:   Удаленный узел не прошел проверку»

29:00.026001-0,EXCP,0,process=httpd,Exception=c593fe3b-aeaf-496a-a32e-6b4dc2d13fff,Descr=’srcVResourceOpenID2Impl.cpp(2555):

c593fe3b-aeaf-496a-a32e-6b4dc2d13fff: Ошибка разбора XML:  — [1,1]

Фатальная ошибка:

Extra content at the end of the document

SystemId: https://localhost:443/SPPR/e1cib/oid2op’

29:00.026002-0,SYSTEM,0,process=httpd,level=INFO,component=vrsbase,class=OID2Log,line=1437,file=srcVResourceOpenID2Impl.cpp,threadId=2212,func=process_oid2rp_request,RP=OP DISCOVERY ERROR https://localhost:443/SPPR/e1cib/oid2op

29:00.026003-0,SYSTEM,0,process=httpd,level=TRACE,component=vrsbase,class=OID2Log,line=281,file=srcVResourceOpenID2Impl.cpp,threadId=2212,func=RequestCookies::setCookie,Msg=set cookie,Name=vrs_nooida,Value=1

  

_stay true_

34 — 20.09.16 — 09:19

Обновляю платформу до 8.3.8.2088

  

_stay true_

35 — 20.09.16 — 14:34

Та же беда. И в cacert.pem отпечаток прописал, и как только уже не изголялся. Не работает.

  

_stay true_

36 — 28.09.16 — 10:43

попробуем ещё раз:) Апну темку)))

Кирпичами прошу не кидаться:)

Итак, было сделано следующее:

1.Установлены 1С:предприятие 8.3.8.2088+Сервер 1С: предприятия(х64) того же релиза(чтобы получить 64х-компоненты для взаимодействия с Apache 2.4.4(x64))

2. Установлен веб-сервер Apache 2.4.4(x64) с поддержкой OpenSSL/1.0.1e

3. Настроены Apache и SSL согластно инструкции http://catalog.mista.ru/public/146288/

4. в каталоге bin платформы и сервера в файлы cacert.pem добавлены отпечатки, полученные строго по инструкции http://1centerprise8.blogspot.ru/2015/08/post-https-82.html

5. Сертификат был успешно импортированы в винду в доверенные корневые центры сертификации

7. Опубликована база-провайдер с галкой «Использовать в качестве OpenID-провайдера» и временем жизни соединения 432 000 секунд.

7. Ссылка на провадйер openid получилась такой: https://myserver/SPPR/e1cib/oid2op

Как в инструкции на its

8. создан тестовый пользователь в базе провайдере СППР: OpenID, способ аутентификации 1С, пароль и роли установлены;

9. В базе-примемнике создан пользователь с таким же логином и ролями, но способ аутентификации указан OpenID;

10. Источник, примемник, настройки OpenID доступны по ссылкам;

11. Настроен технологический журнал в соответствии с интсрукцией на ИТС(получение событий OpenID)

В итоге:

1. Подключаемся к базе-приемнику по тонкому клиенту: появляется окно OpenID-аутентификации со ссылкой на провайдер, вводим логин, пароль вводим пустой или неправильный: получаем ошибку «Ошибка OpenID-аутентификации пользователя(тонкий клиент). В тех журнале наблюдаем:

38:11.145002-0,SYSTEM,0,process=httpd,level=INFO,component=vrsbase,class=OID2Log,line=1437,file=srcVResourceOpenID2Impl.cpp,threadId=1884,func=process_oid2rp_request,RP=OP DISCOVERY ERROR https://kab314-12/SPPR/e1cib/oid2op

38:11.145003-0,SYSTEM,0,process=httpd,level=TRACE,component=vrsbase,class=OID2Log,line=281,file=srcVResourceOpenID2Impl.cpp,threadId=1884,func=RequestCookies::setCookie,Msg=set cookie,Name=vrs_nooida,Value=1

39:27.810001-0,SYSTEM,0,process=httpd,level=TRACE,component=vrsbase,class=OID2Log,line=1977,file=srcVResourceOpenID2Impl.cpp,threadId=1028,func=process_oid2op_request,OP=auth command

39:27.810002-0,SYSTEM,0,process=httpd,level=DEBUG,component=vrsbase,class=OID2Log,line=393,file=srcVResourceOpenID2Impl.cpp,threadId=1028,func=read_message,Msg=»can’t set msg param»,Key=auth.pwd,Value=

39:27.810005-1,DBV8DBEng,1,process=httpd,Trans=0,Sql=»SELECT TOP 2147483647 ID, Name, Descr, OSName, Changed, RolesID, Show, Data, EAuth, AdmRole, UsSprH

FROM v8users

WHERE Name = N’OpenID’ AND ID <> 0x952A5019EAE6A1F74023E7966E3EE1DE

ORDER BY Name»,NParams=0,Rows=1,Func=getExecSQLStatistics

39:27.810006-3,DBV8DBEng,0,process=httpd,Trans=0,Sql=»SELECT TOP 2147483647 ID, Name, Descr, OSName, Changed, RolesID, Show, Data, EAuth, AdmRole, UsSprH

FROM v8users

WHERE Name = N’OpenID’ AND ID <> 0x952A5019EAE6A1F74023E7966E3EE1DE

ORDER BY Name»,NParams=0,planSQLText=’Fields:(

    ID,

    Name,

    Descr,

    OSName,

    Changed,

    RolesID,

    Show,

    Data,

    EAuth,

    AdmRole,

    UsSprH

)

V8USERS (v8users) RANGE SCAN USING INDEX (BYNAME) (1 fields)

WHERE

        (ID <> 952A5019EAE6A1F74023E7966E3EE1DE)

Statistics: RecordsScanned = 1, ParseTime = 0, ExecuteTime = 0, BuffersMemory = 32982, ResultRecords = 1, RecordSize = 731′,Rows=1

39:27.810009-1,DBV8DBEng,1,process=httpd,Trans=0,Func=selectFileName,FileName=ibparams.inf

39:27.810010-3,DBV8DBEng,0,process=httpd,Trans=0,Func=readFile,CatName=Params,FileName=ibparams.inf

39:27.810011-0,SYSTEM,0,process=httpd,level=DEBUG,component=vrsbase,class=OID2Log,line=966,file=srcVResourceOpenID2Impl.cpp,threadId=1028,func=oid2op_check_cred,OP=invalid credentials,Username=OpenID

39:27.810012-0,SYSTEM,0,process=httpd,level=TRACE,component=vrsbase,class=OID2Log,line=2045,file=srcVResourceOpenID2Impl.cpp,threadId=1028,func=process_oid2op_request,OP=auth FAILED

2. Подключаемся к базе-приемнику по тонкому клиенту: появляется окно OpenID-аутентификации со ссылкой на провайдер, вводим КОРРЕКТНЫЕ логин/пароль(как в базе-провайдере), получаем «Ошибка подключения к OpenID-провайдеру https://myserver/SPPR/e1cib/oid2op»;

В тех.журнале видим следующее:

40:46.097000-0,EXCP,0,process=httpd,Exception=9db1fa37-b455-4f3f-b8dd-7de0ea7d6da3,Descr=»srcLibxml2_Intf.cpp(136):

9db1fa37-b455-4f3f-b8dd-7de0ea7d6da3: Ошибка доступа к файлу ‘https://kab314-12/SPPR/e1cib/oid2op’: srcHTTPImpl.cpp(2559):

896db6ac-cc39-4065-8298-1bf5fccb9d98: Ошибка работы с Интернет:   Удаленный узел не прошел проверку»

40:46.097001-0,EXCP,0,process=httpd,Exception=c593fe3b-aeaf-496a-a32e-6b4dc2d13fff,Descr=’srcVResourceOpenID2Impl.cpp(2556):

c593fe3b-aeaf-496a-a32e-6b4dc2d13fff: Ошибка разбора XML:  — [1,1]

Фатальная ошибка:

Extra content at the end of the document

SystemId: https://kab314-12/SPPR/e1cib/oid2op’

40:46.097002-0,SYSTEM,0,process=httpd,level=INFO,component=vrsbase,class=OID2Log,line=1437,file=srcVResourceOpenID2Impl.cpp,threadId=1884,func=process_oid2rp_request,RP=OP DISCOVERY ERROR https://kab314-12/SPPR/e1cib/oid2op

40:46.097003-0,SYSTEM,0,process=httpd,level=TRACE,component=vrsbase,class=OID2Log,line=281,file=srcVResourceOpenID2Impl.cpp,threadId=1884,func=RequestCookies::setCookie,Msg=set cookie,Name=vrs_nooida,Value=1

Сервер и клиент всё поднято на одном компе, в апаче настроен виртуальный хост как по инструкции.

Почему пишет «узел не прошел проверку» и «ошибка работы с интернет» — для меня большая загадка(((

  

_stay true_

37 — 28.09.16 — 10:47

myserver=kab 314-12

Имеем веб сервер Apache2.4 на Centos 7, работает по https. Сертификат самоподписанный. На нем опубликованы 2-е базы.
Сертификат создавал так:

spoiler

# Генерирую ключ
openssl genrsa -des3 -out ca.key 4096
# На основе ключа создаю сертификат для CA
openssl req -new -x509 -days 365 -key ca.key -out ca.crt
# Генерирую ключ
openssl genrsa -out server.key 4096
# На основе предыдущего ключа создаю файл запроса (csr)
openssl req -new -key server.key -config openssl-csr.cnf -reqexts req_ext -out server.csr
# Создаю сертификат сервера (подписываю .csr своим ca.crt)
openssl x509 -req -days 365 -CA ca.crt -CAkey ca.key -set_serial 01 -extfile openssl-csr.cnf -extensions req_ext -in server.csr -out server.crt

Файл default.vrd для базы провайдера:

spoiler

<?xml version="1.0" encoding="UTF-8"?>
<point xmlns="http://v8.1c.ru/8.2/virtual-resource-system"
                xmlns:xs="http://www.w3.org/2001/XMLSchema"
                xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                base="/openidprov"
                ib="Srvr=srv1c;Ref=OpenIDProv;">
        <standardOdata enable="false"
                        reuseSessions="autouse"
                        sessionMaxAge="20"
                        poolSize="10"
                        poolTimeout="5"/>
<b><openid>
        <provider>
                <lifetime>86400</lifetime>
        </provider>
</openid></b>
</point>

Файл default.vrd для базы клиента OpenID:

spoiler

<?xml version="1.0" encoding="UTF-8"?>
<point xmlns="http://v8.1c.ru/8.2/virtual-resource-system"
                xmlns:xs="http://www.w3.org/2001/XMLSchema"
                xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                base="/test-openid-client"
                ib="Srvr=srv1c;Ref=test-openid-client;">
        <standardOdata enable="false"
                        reuseSessions="autouse"
                        sessionMaxAge="20"
                        poolSize="10"
                        poolTimeout="5"/>
        <openid>
                <rely url="https://srv1c-cl-testssl2-web/openidprov/e1cib/oid2op" />
        </openid>
</point>

В базе провайдерской, завел пользователей с паролями. (Пустая новая база 1С, не нашел что нужна какая-то специальная конфигурация, но вдруг.)

В базе клиентской, завел одноименных пользователей. Отключил аутентификацию 1С, включил OpenID.

При запуске клиентской базы тонким клиентом, меня перекидывает в базу OpenID. Если ввожу не верный пароль, сообщается об этом. Если ввожу верный пароль, получаю ошибку: «Ошибка подключения к OpenID провайдеру https://srv1c-cl-testssl2-web/openidprov/e1cib/oid2op».
В технологическом журнале при этом такая ошибка: «Ошибка работы с Интернет: Удаленный узел не прошел проверку».

Сервер 1С и Web сервер, это Linux (CentOS 7). На клиентских машинах Windows, сертификат ca.crt добавлен в хранилище доверенных корневых сертификатов. В браузере базы, и клиентская и провайдерская открываются быз ошибок по https.

Если перейти по адресу https://srv1c-cl-testssl2-web/openidprov/e1cib/oid2op скачивается файлик:

spoiler

<?xml version="1.0" encoding="UTF-8"?>
<xrds:XRDS xmlns:xrds="xri://$xrds" xmlns="xri://$xrd*($v*2.0)">
<XRD>
<Service priority='0'>
<Type>http://specs.openid.net/auth/2.0/server</Type>
<URI>https://srv1c-cl-testssl2-web/openidprov/e1cib/oid2op</URI>
</Service>
</XRD>
</xrds:XRDS>

Также, если захожу веб браузером в базу клиентску, то меня не перекидывает на провайдерскую, в отличии от тонкого клиента.

Подозреваю что проблема в неправельно сгенерированном сертификате, или неправельной установке его на веб сервере (я про сертификат ca.crt), но на ИТС написано что клиентские сертификаты 1с ищет в хранилище сертификатов, а в CentOS нет единого хранилища.
Кстати, если открывать каким-нибудь консольным браузером с веб сервера его страничку:
https://srv1c-cl-testssl2-web/openidprov/e1cib/oid2op то, также открывается тот файлик, который скачивается на десктопных машинах, на сертификат не ругается.

В этой статье будет рассказано о том, как настроить и использовать тонкий клиент на вашем ПК для работы в сервисе.

Пользователи могут работать с приложениями сервиса с помощью веб-браузера или тонкого клиенте. Подробнее о использования веб-браузера читайте в статье.)

Скачивание и установка тонкого клиента.

 Перед установкой вам необходимо определить нужную версию тонкого клиента. Для этого вам нужно:

  1. Запустить приложение в любом браузере
  2. В правом верхнем углу окна приложения нажать кнопку «Показать информацию о программе».
  3. В Окне «О программе» будет указано, под какой версией платформы «1С:Предприятие 8» работает приложение. Вам нужен тонкий клиент той же версии.

1 скриншот в статье Настройка тонкого клиента для работы в сервисе 1С Фреш.jpg

После скачивания программы установки тонкого клиента перейдем к установке:

1. Запустите скачанный exe-файл тонкого клиента.

2. В окне аутентификации пользователя, введите в него логин и пароль, используемые для доступа к своим приложениям в сервисе, и нажмите кнопку «OK».

2 картинка в статье Настройка тонкого клиента для работы в сервисе 1С Фреш.jpg

3. По завершению установки тонкий клиент будет запущен автоматически.

Добавление приложений сервиса в список баз тонкого клиента.

Если в качестве операционной системы вы используете Windows, то в списке информационных баз автоматически будет создана группа 1cfresh включающая в себя:

  • все доступные вам приложения сервиса 1С:Фреш.
  • пункт «Личный кабинет» (1cfresh.com)— вход в личный кабинет пользователя в сервисе;
  • пункт «Завершить сеансы» (1cfresh.com)— сброс автоматической аутентификации в сервисе.

Если вы используете Linux или Mac OS, то для добавления приложений сервиса в список баз тонкого клиента вам нужно:

  1. Нажать кнопку Настройка…
  2. В окне «Настройка диалога запуска» нажать кнопку Кнопка.png в разделе Адреса Интернет-сервисов и списки общих информационных баз.

3 изображение в статье Настройка тонкого клиента для работы в сервисе 1С Фреш.jpg

3. В окне «Редактирование ссылки» введите в поле «Интернет-сервис» адрес http-сервиса:

  • если при работе с приложениями сервиса будет использоваться OpenID-аутентификация, нужно указать адрес http-сервиса с использованием OpenID-аутентификации://1cfresh.com/a/wcib/hs/
  • если вы не желаете, чтобы при работе в тонком клиенте использовалась OpenID-аутентификация (в целях повышения безопасности), нужно указать адрес http-сервиса без OpenID-аутентификации: //1cfresh.com/a/wcib-noopenid/hs/

4 скриншот в теме Настройка тонкого клиента для работы в сервисе 1С Фреш.jpg

4. Нажать кнопку «OK». В окне «Настройка диалога запуска» должна появиться строка с адресом http-сервиса:

5 картинка в теме Настройка тонкого клиента для работы в сервисе 1С Фреш.jpg

5. Нажмите кнопку «ОК».

6.В окне аутентификации указать свой логин и пароль в сервисе и нажать кнопку «OK».

Пользователь может отказаться от автоматического добавления приложений в список информационных баз тонкого клиента. Для этого нужно:

1.Запустить тонкий клиент «1С:Предприятия».

2.Нажать кнопку «Настройка…»

3.В выведенном окне «Настройка диалога запуска» выделить строку с адресом HTTP-сервиса и нажать кнопку крестик.png.

6 изображение в теме Настройка тонкого клиента для работы в сервисе 1С Фреш.jpg

4.Нажать кнопку «OK».

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

Запуск приложений сервиса с помощью тонкого клиента.

Для запуска приложения сервиса:

1. Запустите тонкий клиент 1С Предприятия

2. В окне «Запуск 1С:Предприятия» выберите нужное приложение и нажмите кнопку «1С:Предприятие».

7 скриншот по вопросу Настройка тонкого клиента для работы в сервисе 1С Фреш.jpg

Обновление тонкого клиента.

Если версия тонкого клиента на вашем компьютере отличается от версии платформы «1С:Предприятие» в сервисе, то при попытке входа будет выдана ошибка.

8 изображение по вопросу Настройка тонкого клиента для работы в сервисе 1С Фреш.jpg

В этом случае необходимо скачать и установить дистрибутив нужной версии тонкого клиента как описано в начале данной статьи.

Сотрудники, имеющие персональные учетные записи, могут столкнуться с ошибкой при входе в 1С: «Идентификация пользователя не выполнена». Варианты ее устранения зависят от причин возникновения. Рассмотрим вопросы в нашей статье.

Пользователь ИБ не идентифицирован 1С 8.3 — как исправить

Проблемы с ошибкой «Идентификация пользователя не выполнена» при входе в программу 1С у пользователей возникают, если:

  • некорректно указан логин;
  • пароль не прошел проверку;
  • вход в программу давно не осуществлялся;
  • база данных повреждена.

Неверное имя пользователя

В окне настройки учетной записи параметр Имя (для входа) — это логин, который пользователь выбирает в выпадающем списке при входе в систему. Оно может не совпадать с Полным именем и иметь произвольное обозначение. Полное имя выступает в качестве наименования учетной записи, которое программа подставит в поле Ответственный при создании документов, в поле Пользователь в журнале регистрации и т. д.

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

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

Если логин отсутствует в перечне, то могут быть следующие варианты вопросов:

  • пользователь помечен на удаление;
  • выставлен флаг Недействителен — альтернатива удаления, когда пользователь больше не работает в программе, но в базе есть связанная с ним информация;
  • отключен параметр Показывать в списке выбора, если аутентификации производится средствами 1С:Предприятия;
  • не установлен флаг Вход в программу разрешен.

Неверный пароль

Верхний и нижний регистры букв программа 1С распознает как разные символы. Язык ввода тоже имеет значение. Если пароль задавался на английской раскладке клавиатуры, то при входе следует проверить текущий язык операционной системы.

Например, FghtH и Fghth — это разные пароли. Поэтому при входе требуется внимательность в вопросе пароля и точный ввод всех символов. Если ошибка «Идентификация пользователя не выполнена» повторяется, проверьте, что на клавиатуре не включен индикатор клавиши Caps Lock, он имеет значение только для букв, на числа и символы не влияет.

Когда пользователь забыл пароль, сделать новый может администратор 1С в настройках учетной записи пользователя по кнопке Установить пароль.

При аутентификации средствами операционной системы решить вопрос замены пароля пользователю может только администратор компьютеров.

Длительный перерыв

Если работа 1С организована в клиент-серверном варианте, то при большом перерыве между текущей и предыдущей авторизациями (например, после отпуска) пользователь может столкнуться с вопросом и ошибкой «Идентификация пользователя не выполнена» из-за устаревшего кэша программы 1С. Очистка временных файлов кэша такая же, как при появлении сообщения «Поле объекта не обнаружено». А также рекомендуется перезагрузить сервер.

Файл базы данных поврежден

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

Для решения проблемы:

  • сделайте резервную копию базы;
  • в конфигураторе перейдите в меню Администрирование — Тестирование и исправление;
  • окно с предупреждением проигнорируйте, нажав Продолжить;

  • в окне Тестирование и исправление информационной базы отметьте режимы:
    1. Проверка логической целостности информационной базы — анализ структуры и целостности данных, поиск ошибок в базе сайта;
    2. Проверка ссылочной целостности информационной базы — проверка объектов на наличие несуществующих ссылок на сайте;
    3. Реструктуризация таблиц информационной базы — перезапись основных таблиц базы, процесс занимает длительное время;
  • поставьте флаг у пункта Тестирование и исправление, чтобы при проверке программа исправила выявленные ошибки;
  • при наличии ссылок на несуществующие объекты оставьте Не изменять — в случае обнаружения ссылок на несуществующие объекты никаких исправлений в базе произведено не будет, но они отразятся в результате проверки;
  • при частичной потере данных объектов выберите Создать объекты — при отсутствии необходимых объектов программа создаст временные, которые можно будет заполнить данными после входа в 1С;
  • запустите тестирование и исправление базы, нажав Выполнить.

Когда ошибка «Идентификация пользователя не выполнена» возникает при открытии конфигуратора, исправление ошибок в базе проводится через утилиту 1С chdbfl.exe. Она устанавливается вместе с платформой 1С, расположена в папке bin рабочего каталога программы.

Перед началом проверки скопируйте файл 1Сv8.1CD из каталога БД в любое другое место, чтобы сохранить первоначальный вариант базы.

Запустите утилиту chdbfl.exe из папки bin. В поле Имя файла БД укажите путь до файла поврежденной базы 1Сv8.1CD, он прописан в нижней части окна запуска 1С.

Отметьте флаг Исправлять обнаруженные ошибки и нажмите Выполнить. По окончании процедуры все выявленные и исправленные ошибки отразятся в окне утилиты.

На практике для «лечения» баз применяют оба способа вместе: сначала проверяют физическую целостность, затем ошибки исправляют через конфигуратор. Если исправить ошибку не удалось, и в программе 1С настроено автоматическое резервное копирование, то можно восстановить последнюю копию базы. Но хотим предупредить, что часть последних введенных данных будет потеряна.

Процесс идентификации

В программу 1С:Предприятие встроен механизм, выполняющий идентификацию пользователей при входе. Идентификация — это процедура «распознавания» персоны, пытающейся получить доступ к информационной базе, с помощью проверки соответствия данных, вводимых при входе, с параметрами, сохраненными в системе. В качестве параметров выступают логин и пароль.

Логин — имя, присвоенное пользователю в 1С, пароль — любая произвольная комбинация символов. Разграничивать полномочия сотрудников в программе с помощью учетных записей — распространенная практика, позволяющая:

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

Аутентификация пользователей в 1С

Аутентификации в 1С — это процедура сравнения логина и пароля, введенных пользователем, с теми, что хранятся в базе. В процессе аутентификации программа опознает пользователя либо выдает сообщение «Идентификация пользователя не выполнена».

Для создания новых пользователей и настройки их параметров необходимы права администратора, путь в типовой конфигурации 1С:Бухгалтерия 8.3: Администрирование — Настройки пользователей и прав — Пользователи.

Чтобы программа 1С при входе в систему проводила проверку пользователей, в индивидуальных настройках на вкладке Главное выберите вариант аутентификации:

  • Аутентификация 1С:Предприятия — программа 1С выполняет идентификацию пользователей самостоятельно, имеет параметры:

  • Потребовать установку пароля при входе — при следующем запуске программа выдаст пользователю окно для смены пароля, а после задания нового пароля флаг в этом поле автоматически снимется.
    Проигнорировать окно смены пароля нельзя, иначе произойдет завершение работы программы. По кнопке Установить пароль администратор может самостоятельно назначить пользователю постоянный или временный пароль. Информационное поле рядом с кнопкой показывает наличие пароля (Пароль установлен) или его отсутствие (Пароль пустой).
  • Пользователю запрещено изменять пароль — запрет на смену пароля пользователем самостоятельно. Если флаг отсутствует, поменять пароль можно в разделе Главное в персональных настройках учетной записи.
  • Показывать в списке выбора — устанавливается для всех работающих в программе пользователей. Если учетная запись используется только для идентификации, например, документов при их загрузке из другой базы, то отображать ее в списке выбора пользователей не требуется, флаг не ставят.
  • Аутентификация по протоколу OpenID — протокол OpenID позволяет использовать одну учетную запись для входа на разные системы, ресурсы и т. д.
  • Аутентификация операционной системы — идентификация в фоновом режиме без отображения окна с логином и паролем. При запуске 1С запрашивает у операционной системы имя текущего пользователя ОС и сопоставляет его с указанным в поле Пользователь. При их «одинаковости» вход в программу выполняется. В противном случае проводится аутентификации 1С:Предприятием, но если она не отмечена в настройках пользователя, его логина не будет в списке выбора и открыть программу не получится.

Обслуживание

Заказать консультацию

По этой или иной ошибке Вы можете обратиться к нашим специалистам, мы Вам поможем решить Вашу проблему.

В новой версии 8.3.22 платформы «1С:Предприятие» получат развитие добавленные недавно программные механизмы проверки личности пользователя на основе открытого стандарта OpenID Connect, а также появится функционал, способный сгенерировать для пользователя новый пароль.

Проводить аутентификацию по стандарту OpenID Connect стало проще

При помощи OpenID Connect в 1С можно будет аутентифицировать пользователя на основе проверки, которая уже произошла перед этим, например, на сайте Госуслуг или в Google.

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

Рис. 1 Аутентификация Open ID

Рис. 1 Аутентификация Open ID

При проведении аутентификации через JWT-токены доступа станет возможным гибко настраивать соответствие одного и того же пользователя различным Ключам сопоставления для соответствующих коммуникационных каналов.

Например, пользователь может пройти аутентификацию в Gmail по почте, в Госуслугах с использованием СНИЛС, а у своего интернет-провайдера по номеру телефона. Для таких случаев, у объекта встроенного языка 1С ПользовательИнформационнойБазы появится свойство КлючиСопоставленияПользователя, как раз для его сопоставления с полями (свойствами) JWT-токена:

Рис. 2 Сопоставление полей токена с полями пользователей

Рис. 2 Сопоставление полей токена с полями пользователей

Бесплатная
консультация
эксперта

Олег Виноградский

Разработчик

Спасибо за Ваше обращение!

Специалист 1С свяжется с вами в течение 15 минут.

Пароли могут быть сгенерированы автоматически

В числе прочих улучшений в Конфигураторе в параметрах пользователя для настройки аутентификации в «1С:Предприятии» будет доступна гиперссылка «Сгенерировать пароль». Пароль, сгенерированный при помощи этой гиперссылки, будет легко запомнить, но не легко угадать или подобрать т.к. в нем будут чередоваться гласные и согласные буквы, а цифры располагаться или в конце, или в начале.

Рис. 3 Генерация пароля в Конфигураторе «1С:Предприятие 8.3.22»

Рис. 3 Генерация пароля в Конфигураторе «1С:Предприятие 8.3.22»

Также, в случае если пользователь забыл свой пароль и решил его восстановить, он сможет сгенерировать новый:

Рис. 4 Восстановление пароля в Конфигураторе «1С:Предприятие 8.3.22»

Рис. 4 Восстановление пароля в Конфигураторе «1С:Предприятие 8.3.22»

Сотрудники, имеющие персональные учетные записи, могут столкнуться с ошибкой при входе в 1С: «Идентификация пользователя не выполнена». Варианты ее устранения зависят от причин возникновения. Рассмотрим их в статье.

Содержание

  • Пользователь ИБ не идентифицирован 1С 8.3 — как исправить
    • Неверное имя пользователя
    • Неверный пароль
    • Длительный перерыв
    • Файл базы данных поврежден
  • Процесс идентификации
  • Аутентификация пользователей в 1С

Проблемы с ошибкой «Идентификация пользователя не выполнена» при входе в программу 1С у пользователей возникают, если:

  • некорректно указан логин;
  • пароль не прошел проверку;
  • вход в программу давно не осуществлялся;
  • база данных повреждена.

Неверное имя пользователя

В окне настройки учетной записи параметр Имя (для входа) — это логин, который пользователь выбирает в выпадающем списке при входе в систему. Оно может не совпадать с Полным именем и иметь произвольное обозначение. Полное имя выступает в качестве наименования учетной записи, которое программа подставит в поле Ответственный при создании документов, в поле Пользователь в журнале регистрации и т. д.

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

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

Если логин отсутствует в перечне, то могут быть следующие варианты:

  • пользователь помечен на удаление;
  • выставлен флаг Недействителен — альтернатива удаления, когда пользователь больше не работает в программе, но в базе есть связанная с ним информация;
  • отключен параметр Показывать в списке выбора, если аутентификации производится средствами 1С:Предприятия;
  • не установлен флаг Вход в программу разрешен.

Неверный пароль

Верхний и нижний регистры букв программа 1С распознает как разные символы. Язык ввода тоже имеет значение. Если пароль задавался на английской раскладке клавиатуры, то при входе следует проверить текущий язык операционной системы.

Например, FghtH и Fghth — это разные пароли. Поэтому при входе требуется внимательность и точный ввод всех символов. Если ошибка «Идентификация пользователя не выполнена» повторяется, проверьте, что на клавиатуре не включен индикатор клавиши Caps Lock, он имеет значение только для букв, на числа и символы не влияет.

Когда пользователь забыл пароль, сделать новый может администратор 1С в настройках учетной записи пользователя по кнопке Установить пароль.

При аутентификации средствами операционной системы заменить пароль пользователю может только администратор компьютеров.

Длительный перерыв

Если работа 1С организована в клиент-серверном варианте, то при большом перерыве между текущей и предыдущей авторизациями (например, после отпуска) пользователь может столкнуться с ошибкой «Идентификация пользователя не выполнена» из-за устаревшего кэша программы 1С. Очистка временных файлов кэша такая же, как при появлении сообщения «Поле объекта не обнаружено». А также рекомендуется перезагрузить сервер.

Файл базы данных поврежден

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

Подробнее Ошибка СУБД: файл базы данных поврежден в 1С 8.3

Для решения проблемы:

  • сделайте резервную копию базы;
  • в конфигураторе перейдите в меню Администрирование — Тестирование и исправление;
  • окно с предупреждением проигнорируйте, нажав Продолжить;
  • в окне Тестирование и исправление информационной базы отметьте режимы:
    • Проверка логической целостности информационной базы — анализ структуры и целостности данных, поиск ошибок в базе;
    • Проверка ссылочной целостности информационной базы — проверка объектов на наличие несуществующих ссылок;
    • Реструктуризация таблиц информационной базы — перезапись основных таблиц базы, процесс занимает длительное время;
  • поставьте флаг у пункта Тестирование и исправление, чтобы при проверке программа исправила выявленные ошибки;
  • при наличии ссылок на несуществующие объекты оставьте Не изменять — в случае обнаружения ссылок на несуществующие объекты никаких исправлений в базе произведено не будет, но они отразятся в результате проверки;
  • при частичной потере данных объектов выберите Создать объекты — при отсутствии необходимых объектов программа создаст временные, которые можно будет заполнить данными после входа в 1С;
  • запустите тестирование и исправление базы, нажав Выполнить.

Когда ошибка «Идентификация пользователя не выполнена» возникает при открытии конфигуратора, исправление ошибок в базе проводится через утилиту 1С chdbfl.exe. Она устанавливается вместе с платформой 1С, расположена в папке bin рабочего каталога программы.

Перед началом проверки скопируйте файл 1Сv8.1CD из каталога БД в любое другое место, чтобы сохранить первоначальный вариант базы.

Запустите утилиту chdbfl.exe из папки bin. В поле Имя файла БД укажите путь до файла поврежденной базы 1Сv8.1CD, он прописан в нижней части окна запуска 1С.

Отметьте флаг Исправлять обнаруженные ошибки и нажмите Выполнить. По окончании процедуры все выявленные и исправленные ошибки отразятся в окне утилиты.

На практике для «лечения» баз применяют оба способа вместе: сначала проверяют физическую целостность, затем ошибки исправляют через конфигуратор. Если исправить ошибку не удалось, и в программе 1С настроено автоматическое резервное копирование, то можно восстановить последнюю копию базы. Но хотим предупредить, что часть последних введенных данных будет потеряна.

Процесс идентификации

В программу 1С:Предприятие встроен механизм, выполняющий идентификацию пользователей при входе. Идентификация — это процедура «распознавания» персоны, пытающейся получить доступ к информационной базе, с помощью проверки соответствия данных, вводимых при входе, с параметрами, сохраненными в системе. В качестве параметров выступают логин и пароль.

Логин — имя, присвоенное пользователю в 1С, пароль — любая произвольная комбинация символов. Разграничивать полномочия сотрудников в программе с помощью учетных записей — распространенная практика, позволяющая:

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

Аутентификация пользователей в 1С

Аутентификации в 1С — это процедура сравнения логина и пароля, введенных пользователем, с теми, что хранятся в базе. В процессе аутентификации программа опознает пользователя либо выдает сообщение «Идентификация пользователя не выполнена».

Для создания новых пользователей и настройки их параметров необходимы права администратора, путь в типовой конфигурации 1С:Бухгалтерия 8.3: Администрирование — Настройки пользователей и прав — Пользователи.

Чтобы программа 1С при входе в систему проводила проверку пользователей, в индивидуальных настройках на вкладке Главное выберите вариант аутентификации:

  • Аутентификация 1С:Предприятия — программа 1С выполняет идентификацию пользователей самостоятельно, имеет параметры:
    • Потребовать установку пароля при входе — при следующем запуске программа выдаст пользователю окно для смены пароля, а после задания нового пароля флаг в этом поле автоматически снимется.
      Проигнорировать окно смены пароля нельзя, иначе произойдет завершение работы программы. По кнопке Установить пароль администратор может самостоятельно назначить пользователю постоянный или временный пароль. Информационное поле рядом с кнопкой показывает наличие пароля (Пароль установлен) или его отсутствие (Пароль пустой).
    • Пользователю запрещено изменять пароль — запрет на смену пароля пользователем самостоятельно. Если флаг отсутствует, поменять пароль можно в разделе Главное в персональных настройках учетной записи.
    • Показывать в списке выбора — устанавливается для всех работающих в программе пользователей. Если учетная запись используется только для идентификации, например, документов при их загрузке из другой базы, то отображать ее в списке выбора пользователей не требуется, флаг не ставят.
  • Аутентификация по протоколу OpenID — протокол OpenID позволяет использовать одну учетную запись для входа на разные системы, ресурсы и т. д.
  • Аутентификация операционной системы — идентификация в фоновом режиме без отображения окна с логином и паролем. При запуске 1С запрашивает у операционной системы имя текущего пользователя ОС и сопоставляет его с указанным в поле Пользователь. При их «одинаковости» вход в программу выполняется. В противном случае проводится аутентификации 1С:Предприятием, но если она не отмечена в настройках пользователя, его логина не будет в списке выбора и открыть программу не получится.

См. также:

  • Утилита chdbfl.exe для 8.3
  • Тестирование и исправление базы 1С
  • Несоответствие типов
  • Итератор для значения не определен
  • Неоднозначное поле в запросе
  • Исправление технических ошибок при работе с 1С:Бухгалтерия

Если Вы еще не подписаны:

Активировать демо-доступ бесплатно →

или

Оформить подписку на Рубрикатор →

После оформления подписки вам станут доступны все материалы по 1С:Бухгалтерия, записи поддерживающих эфиров и вы сможете задавать любые вопросы по 1С.

Подписывайтесь на наши YouTube и Telegram чтобы не пропустить
важные изменения 1С и законодательства

Помогла статья?

Получите еще секретный бонус и полный доступ к справочной системе БухЭксперт8 на 14 дней бесплатно

I’m using Django-Allauth in my Django project. I added some Social Providers (Facebook, Google) and it works perfectly!

But I’m facing a problem when trying to use OpenID providers.
I’ve been testing it with Yahoo and AOL so far, and both end up with the same error: openid.consumer.consumer.ProtocolError: Parameter next not in return_to URL.

Configuration

settings.py

Some relevant info of my project’s setting.py file:

INSTALLED_APPS = [
    # Django apps
    'django.contrib.auth',
    'django.contrib.sites',
    # Allauth apps
    'allauth',
    'allauth.account',
    'allauth.socialaccount',
    'allauth.socialaccount.providers.openid',
    'allauth.socialaccount.providers.facebook',
    'allauth.socialaccount.providers.google',
    # Project apps
    'frontoffice.apps.FrontofficeConfig',
    'middleoffice.apps.MiddleofficeConfig',
]
SITE_ID = 1

AUTHENTICATION_BACKENDS = (
    'django.contrib.auth.backends.ModelBackend',
    'allauth.account.auth_backends.AuthenticationBackend',
)

# Email sending
EMAIL_HOST = 'smtp.sendgrid.net'
EMAIL_HOST_USER = 'apikey'
EMAIL_HOST_PASSWORD = 'secret'
EMAIL_PORT = 587
EMAIL_USE_TLS = True

# Auth and allauth settings
ACCOUNT_AUTHENTICATION_METHOD = 'email'
ACCOUNT_EMAIL_REQUIRED = True
ACCOUNT_USERNAME_REQUIRED = False
ACCOUNT_USERNAME_MIN_LENGTH = 3

# Redirections
ACCOUNT_LOGOUT_REDIRECT_URL = '/front-office'
LOGIN_REDIRECT_URL = '/front-office'

# Email verification
ACCOUNT_EMAIL_VERIFICATION = 'mandatory'
SOCIALACCOUNT_EMAIL_VERIFICATION = 'mandatory'
ACCOUNT_EMAIL_CONFIRMATION_EXPIRE_DAYS = 3  # in days
ACCOUNT_EMAIL_CONFIRMATION_COOLDOWN = 30    # in seconds

# Account signup
ACCOUNT_SIGNUP_EMAIL_ENTER_TWICE = True
ACCOUNT_SIGNUP_FORM_CLASS = 'frontoffice.forms.UserAccountForm'

# Social Accounts
SOCIALACCOUNT_AUTO_SIGNUP = False
SOCIALACCOUNT_EMAIL_REQUIRED = True
SOCIALACCOUNT_QUERY_EMAIL = True
SOCIALACCOUNT_PROVIDERS = {
    'openid': {
        'SERVERS': [
            dict(id='yahoo',
                 name='Yahoo OpenID',
                 openid_url='http://me.yahoo.com'),
        ]
    },
    'facebook': {
        'SCOPE': ['email', ],
        'METHOD': 'js_sdk',
        'INIT_PARAMS': {'cookie': True},
        'FIELDS': ['id', 'email', 'name', 'first_name', 'last_name', 'verified', 'locale', 'timezone', 'link', 'gender', 'updated_time',],
        'VERIFIED_EMAIL': False,
    },
    'google': {
        'SCOPE': [
            'profile',
            'email',
        ],
        'AUTH_PARAMS': {
            'access_type': 'online',
        }
    }
}

I’m aware some settings don’t override defaults or are redundant, it just helps me remembering what behaviours I should expect.

Using OpenID Auth

Error stacktrace

As I said, I tried Yahoo OpenID (http://me.yahoo.com), both from pre-defined provider and OpenID URL, and AOL, from URL (http://openid.aol.com/myUserName).
Both return the aforementionned error, here’s an example stacktrace :

INFO:django.server:"GET /accounts/openid/login/?openid=http%3A%2F%2Fme.yahoo.com&process=login HTTP/1.1" 302 0
ERROR:root:Verifying return_to arguments: Parameter next not in return_to URL
Traceback (most recent call last):
  File "d:ProfilesuserEnvsDjangolibsite-packagesopenidconsumerconsumer.py", line 673, in _checkReturnTo
    self._verifyReturnToArgs(message.toPostArgs())
  File "d:ProfilesuserEnvsDjangolibsite-packagesopenidconsumerconsumer.py", line 886, in _verifyReturnToArgs
    (pair[0], ))
openid.consumer.consumer.ProtocolError: Parameter next not in return_to URL
INFO:django.server:
"GET /accounts/openid/callback/?janrain_nonce=2017-11-21T15:56:32_nonce_zu
    &next=
    &openid.ns=http://specs.openid.net/auth/2.0
    &openid.mode=id_res
    &openid.return_to=http://localhost:8000/accounts/openid/callback/?janrain_nonce=2017-11-21T15:56:32_nonce_zu
    &next=
    &openid.claimed_id=https://me.yahoo.com/a/C7dd_secret_bVtec-#784b5
    &openid.identity=https://me.yahoo.com/a/C7dd_secret_bVtec-
    &openid.assoc_handle=1P.qFXi_secret_7MP8.Cv06_secret_wEeA--
    &openid.realm=http://localhost:8000/
    &openid.ns.ax=http://openid.net/srv/ax/1.0
    &openid.ax.mode=fetch_response
    &openid.ax.value.email=jane.doe@yahoo.fr
    &openid.ax.value.fullname=Jane Doe
    &openid.response_nonce=2017-11-21T15:56:33Zd_nonce_eA--
    &openid.signed=assoc_handle,claimed_id,identity,mode,ns,op_endpoint,response_nonce,return_to,signed,ax.value.email,ax.type.email,ax.value.fullname,ax.type.fullname,ns.ax,ax.mode,pape.auth_level.nist
    &openid.op_endpoint=https://open.login.yahooapis.com/openid/op/auth
    &openid.ax.type.email=http://axschema.org/contact/email
    &openid.ax.type.fullname=http://axschema.org/namePerson
    &openid.pape.auth_level.nist=0
    &openid.sig=n/JOWn_secret_3630=
HTTP/1.1"
200 647

I put line feeds between parameters for readability.

Question

As you can see, the error message is quite self-explanatory: parameter &next= is empty.

Would anyone happen to know where things might have gone wrong? Is it provider-related, libray-related, configuration/implementation-related?

Thanks in advance!

Имеем веб сервер Apache2.4 на Centos 7, работает по https. Сертификат самоподписанный. На нем опубликованы 2-е базы.
Сертификат создавал так:

spoiler

# Генерирую ключ
openssl genrsa -des3 -out ca.key 4096
# На основе ключа создаю сертификат для CA
openssl req -new -x509 -days 365 -key ca.key -out ca.crt
# Генерирую ключ
openssl genrsa -out server.key 4096
# На основе предыдущего ключа создаю файл запроса (csr)
openssl req -new -key server.key -config openssl-csr.cnf -reqexts req_ext -out server.csr
# Создаю сертификат сервера (подписываю .csr своим ca.crt)
openssl x509 -req -days 365 -CA ca.crt -CAkey ca.key -set_serial 01 -extfile openssl-csr.cnf -extensions req_ext -in server.csr -out server.crt

Файл default.vrd для базы провайдера:

spoiler

<?xml version="1.0" encoding="UTF-8"?>
<point xmlns="http://v8.1c.ru/8.2/virtual-resource-system"
                xmlns:xs="http://www.w3.org/2001/XMLSchema"
                xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                base="/openidprov"
                ib="Srvr=srv1c;Ref=OpenIDProv;">
        <standardOdata enable="false"
                        reuseSessions="autouse"
                        sessionMaxAge="20"
                        poolSize="10"
                        poolTimeout="5"/>
<b><openid>
        <provider>
                <lifetime>86400</lifetime>
        </provider>
</openid></b>
</point>

Файл default.vrd для базы клиента OpenID:

spoiler

<?xml version="1.0" encoding="UTF-8"?>
<point xmlns="http://v8.1c.ru/8.2/virtual-resource-system"
                xmlns:xs="http://www.w3.org/2001/XMLSchema"
                xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                base="/test-openid-client"
                ib="Srvr=srv1c;Ref=test-openid-client;">
        <standardOdata enable="false"
                        reuseSessions="autouse"
                        sessionMaxAge="20"
                        poolSize="10"
                        poolTimeout="5"/>
        <openid>
                <rely url="https://srv1c-cl-testssl2-web/openidprov/e1cib/oid2op" />
        </openid>
</point>

В базе провайдерской, завел пользователей с паролями. (Пустая новая база 1С, не нашел что нужна какая-то специальная конфигурация, но вдруг.)

В базе клиентской, завел одноименных пользователей. Отключил аутентификацию 1С, включил OpenID.

При запуске клиентской базы тонким клиентом, меня перекидывает в базу OpenID. Если ввожу не верный пароль, сообщается об этом. Если ввожу верный пароль, получаю ошибку: «Ошибка подключения к OpenID провайдеру https://srv1c-cl-testssl2-web/openidprov/e1cib/oid2op».
В технологическом журнале при этом такая ошибка: «Ошибка работы с Интернет: Удаленный узел не прошел проверку».

Сервер 1С и Web сервер, это Linux (CentOS 7). На клиентских машинах Windows, сертификат ca.crt добавлен в хранилище доверенных корневых сертификатов. В браузере базы, и клиентская и провайдерская открываются быз ошибок по https.

Если перейти по адресу https://srv1c-cl-testssl2-web/openidprov/e1cib/oid2op скачивается файлик:

spoiler

<?xml version="1.0" encoding="UTF-8"?>
<xrds:XRDS xmlns:xrds="xri://$xrds" xmlns="xri://$xrd*($v*2.0)">
<XRD>
<Service priority='0'>
<Type>http://specs.openid.net/auth/2.0/server</Type>
<URI>https://srv1c-cl-testssl2-web/openidprov/e1cib/oid2op</URI>
</Service>
</XRD>
</xrds:XRDS>

Также, если захожу веб браузером в базу клиентску, то меня не перекидывает на провайдерскую, в отличии от тонкого клиента.

Подозреваю что проблема в неправельно сгенерированном сертификате, или неправельной установке его на веб сервере (я про сертификат ca.crt), но на ИТС написано что клиентские сертификаты 1с ищет в хранилище сертификатов, а в CentOS нет единого хранилища.
Кстати, если открывать каким-нибудь консольным браузером с веб сервера его страничку:
https://srv1c-cl-testssl2-web/openidprov/e1cib/oid2op то, также открывается тот файлик, который скачивается на десктопных машинах, на сертификат не ругается.

   _stay true_

14.09.16 — 09:27

Здравствуйте. Есть три базы с идентичнымы списками пользователей(логины, пароли, права)

Юзеры планируют работать в веб морде.

Хотим попробовать настроить так, чтобы авторизовавшись во «входной» базе, в две другие заходили без ввода логина и пароля.

Перерыл кучу статей в сети, включая итс. Опубликовал «входную» базу с галкой «использовать в качестве провайдера OpenID». Две другие опебликовал с галками «Использовать OpenID-аутентификацию и в поле с адресом провайдера указал как в инструкции: http://127.0.0.1/mybase//e1cib/oid2op

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

<?xml version=»1.0″ encoding=»UTF-8″?>

<xrds:XRDS xmlns:xrds=»xri://$xrds» xmlns=»xri://$xrd*($v*2.0)»>

<XRD>

<Service priority=’0′>

<Type>http://specs.openid.net/auth/2.0/server</Type>;

<URI>http://127.0.0.1/mybase/e1cib/oid2op</URI>;

</Service>

</XRD>

</xrds:XRDS>

Ни в какую не хочет появляться окно OpenID-аутентификации. Только стандартное окно 1С.

платформа 8.3.8.2054 + сервер 1С(x64), веб-сервер Apache 2.4.4(x64)

Кто настраивал подобное — поделитесь мудростью.

   _stay true_

1 — 14.09.16 — 09:29

   _stay true_

2 — 14.09.16 — 10:11

Ну блин, выручайте((

   _stay true_

3 — 14.09.16 — 10:22

Где же все остроумные гении типа «позовите специалиста» или «тебе этого делать не нужно»?)) А то скучно

   xafavute

4 — 14.09.16 — 10:24

все сервера на 1 компе?

   _stay true_

5 — 14.09.16 — 10:24

(4) Да, я пока локально на своём играюсь с win7 x64

   _stay true_

6 — 14.09.16 — 10:25

Все три публикации доступны по 127.0.0.1/mybase или Localhost/mybase

Пробовал ru_RU в конец добавлять — безрезультатно.

   _stay true_

7 — 14.09.16 — 10:31

Ещё наблюдал, что базы, в публикации которых указана ссылка на провайдер, при запуске по веб-морде долго «висят», а потом появляется окно 1С-аутентификации. Установка юзеру галки «Аутентификации OpenID» не дала результатов

   xafavute

8 — 14.09.16 — 10:36

может это?

Если OpenID-провайдер требует интерактивной аутентификации (происходит первое обращение или истекло время жизни признака аутентифицированности), клиент отображает диалог для ввода имени и пароля пользователя.

Аутентификация происходит по списку пользователей информационной базы OpenID-провайдера.

   xafavute

9 — 14.09.16 — 10:36

добавь в базу openid тестового пользователя и проверь

   _stay true_

10 — 14.09.16 — 10:38

(9) Пробую

   xafavute

11 — 14.09.16 — 10:40

также включи тж по exeption

   xafavute

12 — 14.09.16 — 10:40

еще нашел

Возможно, дело в том, что вы пытаетесь работать c OpenID провайдером по протоколу http.

Это следует из того, что в файле oid2op указан адрес OpenID провайдера с протоколом http.

<URI>http://msk-s3-arm065/sm/e1cib/oid2op</URI>;

В то время как в документации по 1С:Предприятию сказано (Руководство администратора, приложение 3, п. 3.16.8.2):

ВНИМАНИЕ! Взаимодействие с OpenID-провайдером осуществляется только по HTTPS-соединению.

   xafavute

13 — 14.09.16 — 10:41

   _stay true_

14 — 14.09.16 — 10:44

(12) Поднимаем Apache 2.4.4(x64) с SSL. Будем пробовать.

   Мыш

15 — 14.09.16 — 11:01

ОпенИД не делал, но доменную авторизацию заборол. Но на ИИС.

   _stay true_

16 — 19.09.16 — 10:51

Не получилось.

Настроили SSL как

http://adminsnotes.blogspot.ru/2008/01/apache-openssl-windows.html

В браузере стучится в базу по https://localhost:443/mybase

Ссылка на провайдер стала такой:

https://localhost:443/mybase/e1cib/oid2op

default.vrd базы провайдера Openid

<?xml version=»1.0″ encoding=»UTF-8″?>

<point xmlns=»http://v8.1c.ru/8.2/virtual-resource-system»;

        xmlns:xs=»http://www.w3.org/2001/XMLSchema»;

        xmlns:xsi=»http://www.w3.org/2001/XMLSchema-instance»;

        base=»/SPPR»

        ib=»File=&quot;D:KULESHOV_K_OSPPR_FILE&quot;;»

        enableStandardOData=»true»

        temp=»D:wwwtmp»>

    <ws publishExtensionsByDefault=»true»>

        <point name=»EnterpriseDataExchange_1_0_1_1″

                alias=»EnterpriseDataExchange_1_0_1_1.1cws»

                enable=»true»/>

        <point name=»EnterpriseDataUpload_1_0_1_1″

                alias=»EnterpriseDataUpload_1_0_1_1.1cws»

                enable=»true»/>

        <point name=»ErrorsExchange»

                alias=»ErrorsExchange.1cws»

                enable=»true»/>

        <point name=»Exchange»

                alias=»exchange.1cws»

                enable=»true»/>

        <point name=»Exchange_2_0_1_6″

                alias=»exchange_2_0_1_6.1cws»

                enable=»true»/>

        <point name=»FunctionModel»

                alias=»FunctionModel.1cws»

                enable=»true»/>

        <point name=»InterfaceVersion»

                alias=»InterfaceVersion.1cws»

                enable=»true»/>

    </ws>

    <httpServices publishExtensionsByDefault=»true»/>

    <openid>

        <provider>

            <lifetime>604800</lifetime>

        </provider>

    </openid>

</point>

default.vrd базы со ссылкой на провайдер openid:

<?xml version=»1.0″ encoding=»UTF-8″?>

<point xmlns=»http://v8.1c.ru/8.2/virtual-resource-system»;

        xmlns:xs=»http://www.w3.org/2001/XMLSchema»;

        xmlns:xsi=»http://www.w3.org/2001/XMLSchema-instance»;

        base=»/DMC_WEB»

        ib=»File=&quot;D:KULESHOV_K_ODMC_WEB&quot;;»

        enableStandardOData=»true»>

    <httpServices publishByDefault=»false»/>

    <ws>

        <point name=»AddressSystem»

                alias=»AddressSystem.1cws»

                enable=»true»/>

        <point name=»DMMessageService»

                alias=»dmmessage.1cws»

                enable=»true»/>

        <point name=»DMService»

                alias=»dm.1cws»

                enable=»true»/>

        <point name=»DMX»

                alias=»DMX.1cws»

                enable=»true»/>

        <point name=»EnterpriseDataExchange_1_0_1_1″

                alias=»EnterpriseDataExchange_1_0_1_1.1cws»

                enable=»true»/>

        <point name=»EnterpriseDataUpload_1_0_1_1″

                alias=»EnterpriseDataUpload_1_0_1_1.1cws»

                enable=»true»/>

        <point name=»Exchange»

                alias=»exchange.1cws»

                enable=»true»/>

        <point name=»Exchange_2_0_1_6″

                alias=»exchange_2_0_1_6.1cws»

                enable=»true»/>

        <point name=»Files»

                alias=»files.1cws»

                enable=»true»/>

        <point name=»InterfaceVersion»

                alias=»InterfaceVersion.1cws»

                enable=»true»/>

        <point name=»MEDO»

                alias=»medo.1cws»

                enable=»true»/>

        <point name=»MEDO1C»

                alias=»medo1c.1cws»

                enable=»true»/>

        <point name=»MobileDMVersionService»

                alias=»mobileDMVersionService.1cws»

                enable=»true»/>

        <point name=»MEDO2013″

                alias=»medo2013.1cws»

                enable=»true»/>

    </ws>

    <openid>

        <rely url=»https://localhost:443/SPPR//e1cib/oid2op»/>;

    </openid>

</point>

И содержимое файла oid2op

<?xml version=»1.0″ encoding=»UTF-8″?>

<xrds:XRDS xmlns:xrds=»xri://$xrds» xmlns=»xri://$xrd*($v*2.0)»>

<XRD>

<Service priority=’0′>

<Type>http://specs.openid.net/auth/2.0/server</Type>;;

<URI>https://localhost:443/mybase/e1cib/oid2op</URI>;;

</Service>

</XRD>

</xrds:XRDS>

Всё-равно вылезает стандартное окно 1С-аутентификации.

   _stay true_

17 — 19.09.16 — 10:53

   xafavute

18 — 19.09.16 — 11:00

(17) Сертификаты для https как настраивал?

   xafavute

19 — 19.09.16 — 11:00

сама ссылкка в браузере открывается?

   arsik

20 — 19.09.16 — 11:03

А попробуй в настройках не локалхост указать, а нормальный,внешний, айпишник.

   _stay true_

21 — 19.09.16 — 11:08

(18) сертификаты как описано в статье в (16)

http://adminsnotes.blogspot.ru/2008/01/apache-openssl-windows.html

В командной строке прописывали нужные команды. Всё как по инструкции

(20) Сейчас попробую.

   arsik

22 — 19.09.16 — 11:10

+ (20) Клиент возможно пытается на 127.0.0.1 искать openid сервер.

   _stay true_

23 — 19.09.16 — 11:16

(22) я первый раз такое пытаюсь поднять: разве openid-сервером в данном случае не выступает база 1С?

   xafavute

24 — 19.09.16 — 11:22

   _stay true_

25 — 19.09.16 — 11:27

(24) Да. Скачивается файлик. Как в статье на ITS описано.

<?xml version=»1.0″ encoding=»UTF-8″?>

<xrds:XRDS xmlns:xrds=»xri://$xrds» xmlns=»xri://$xrd*($v*2.0)»>

<XRD>

<Service priority=’0′>

<Type>http://specs.openid.net/auth/2.0/server</Type>;;;

<URI>https://localhost:443/mybase/e1cib/oid2op</URI>;;;

</Service>

</XRD>

</xrds:XRDS>

   _stay true_

26 — 19.09.16 — 15:25

Если через тонкий клиент и выставить параметр запуска /OIDA+, то такая ошибка лезет:

«1с ошибка подключения к openid провайдеру https://localhost:443/mybase/e1cib/oid2op»; и предлагает повторить попытку подключения

Через браузер даже окошко OpenID-аутентификации не лезет.

Может, чего с юзерами намудрил? В базе-провайдере: создал админа с полными правами и ролью администратор системы, поставил галку «Аутентификация 1С: предприятия» и галку «Аутентификация OpenID». Во второй базе, где указана ссылка на провайдер OpenID, просто создал юзера с таким же логином и правами, но выставил только галку «Аутентификация OpneID».

   _stay true_

27 — 19.09.16 — 15:48

Если просто без ввода пароля нажать вход, то получаем ошибку: «Ошибка OpenID-аутентификации пользователя(Тонкий клиент).

Что за бяка-кака(((

   arsik

28 — 19.09.16 — 18:30

Внешний айпишник указывал? У тебя клиент пытается на локалхосте найти опенайди сервер.

   xafavute

29 — 19.09.16 — 18:34

(26) Ты уже выяснил чей список показывается: свой или чужой?

   xafavute

30 — 19.09.16 — 18:35

И в тж что пишется?

   xafavute

31 — 19.09.16 — 18:35

попробуй полный собрать

   xafavute

32 — 19.09.16 — 18:36

ну и платформу не ниже 8.3.8.2027

   _stay true_

33 — 20.09.16 — 08:36

(28) Внешний айпи не указывал, ибо пока тестирую всё на рабочем компе.

(29) В тонком клиенте в окне OpenID-аутентификации не отображаются пользователи в списке вообще. Приходится руками писать имя и пароль. Если вводишь корректные данные — ругается, что ошибка соедигнения с сервером OpenID, если оставляешь пароль пустым — вылетает ошибка «Ошибка OpenID аутентификации(тонкий клиент)

(32) Платформа 8.3.8.1933+сервер x64

(31) Не совсем понял.

(30) В ТЖ вот что вижу:

Statistics: RecordsScanned = 1, ParseTime = 0, ExecuteTime = 0, BuffersMemory = 32988, ResultRecords = 1, RecordSize = 731′,Rows=1

28:59.980006-0,SYSTEM,0,process=httpd,level=TRACE,component=vrsbase,class=OID2Log,line=281,file=srcVResourceOpenID2Impl.cpp,threadId=4184,func=RequestCookies::setCookie,Msg=set cookie,Name=vrs_oid2op_auth,Value=’OpenID:20160920042859:9f6a9aee-ba45-4104-919a-5c161bf1edf8:gpJlceZT/y6QRXQEVcRMe7nlPHdTgWus2RJmM9ogOwc=’

28:59.980007-0,SYSTEM,0,process=httpd,level=TRACE,component=vrsbase,class=OID2Log,line=2027,file=srcVResourceOpenID2Impl.cpp,threadId=4184,func=process_oid2op_request,OP=auth OK

28:59.995001-0,SYSTEM,0,process=httpd,level=TRACE,component=vrsbase,class=OID2Log,line=1128,file=srcVResourceOpenID2Impl.cpp,threadId=2212,func=process_oid2rp_request,RP=request received

28:59.995002-0,SYSTEM,0,process=httpd,level=TRACE,component=vrsbase,class=OID2Log,line=1409,file=srcVResourceOpenID2Impl.cpp,threadId=2212,func=process_oid2rp_request,RPCommand=init

28:59.995003-0,SYSTEM,0,process=httpd,level=TRACE,component=vrsbase,class=OID2Log,line=1413,file=srcVResourceOpenID2Impl.cpp,threadId=2212,func=process_oid2rp_request,RP=init command

28:59.995004-0,SYSTEM,0,process=httpd,level=TRACE,component=vrsbase,class=OID2Log,line=281,file=srcVResourceOpenID2Impl.cpp,threadId=2212,func=RequestCookies::setCookie,Msg=set cookie,Name=vrs_nooida,Value=

28:59.995005-0,SYSTEM,0,process=httpd,level=TRACE,component=vrsbase,class=OID2Log,line=281,file=srcVResourceOpenID2Impl.cpp,threadId=2212,func=RequestCookies::setCookie,Msg=set cookie,Name=vrs_oid2rp_sii,Value=966271582496286583:3393608938:1CV8C:

28:59.995006-0,SYSTEM,0,process=httpd,level=TRACE,component=vrsbase,class=OID2Log,line=2578,file=srcVResourceOpenID2Impl.cpp,threadId=2212,func=performDiscovery,RP=open https://localhost:443/SPPR/e1cib/oid2op

29:00.011000-0,SYSTEM,0,process=httpd,level=TRACE,component=vrsbase,class=OID2Log,line=2584,file=srcVResourceOpenID2Impl.cpp,threadId=2212,func=performDiscovery,RP XRDS parsing=downloading and parsing

29:00.026000-0,EXCP,0,process=httpd,Exception=9db1fa37-b455-4f3f-b8dd-7de0ea7d6da3,Descr=»srcLibxml2_Intf.cpp(136):

9db1fa37-b455-4f3f-b8dd-7de0ea7d6da3: Ошибка доступа к файлу ‘https://localhost:443/SPPR/e1cib/oid2op’: srcHTTPImpl.cpp(2559):

896db6ac-cc39-4065-8298-1bf5fccb9d98: Ошибка работы с Интернет:   Удаленный узел не прошел проверку»

29:00.026001-0,EXCP,0,process=httpd,Exception=c593fe3b-aeaf-496a-a32e-6b4dc2d13fff,Descr=’srcVResourceOpenID2Impl.cpp(2555):

c593fe3b-aeaf-496a-a32e-6b4dc2d13fff: Ошибка разбора XML:  — [1,1]

Фатальная ошибка:

Extra content at the end of the document

SystemId: https://localhost:443/SPPR/e1cib/oid2op’

29:00.026002-0,SYSTEM,0,process=httpd,level=INFO,component=vrsbase,class=OID2Log,line=1437,file=srcVResourceOpenID2Impl.cpp,threadId=2212,func=process_oid2rp_request,RP=OP DISCOVERY ERROR https://localhost:443/SPPR/e1cib/oid2op

29:00.026003-0,SYSTEM,0,process=httpd,level=TRACE,component=vrsbase,class=OID2Log,line=281,file=srcVResourceOpenID2Impl.cpp,threadId=2212,func=RequestCookies::setCookie,Msg=set cookie,Name=vrs_nooida,Value=1

   _stay true_

34 — 20.09.16 — 09:19

Обновляю платформу до 8.3.8.2088

   _stay true_

35 — 20.09.16 — 14:34

Та же беда. И в cacert.pem отпечаток прописал, и как только уже не изголялся. Не работает.

   _stay true_

36 — 28.09.16 — 10:43

попробуем ещё раз:) Апну темку)))

Кирпичами прошу не кидаться:)

Итак, было сделано следующее:

1.Установлены 1С:предприятие 8.3.8.2088+Сервер 1С: предприятия(х64) того же релиза(чтобы получить 64х-компоненты для взаимодействия с Apache 2.4.4(x64))

2. Установлен веб-сервер Apache 2.4.4(x64) с поддержкой OpenSSL/1.0.1e

3. Настроены Apache и SSL согластно инструкции http://catalog.mista.ru/public/146288/

4. в каталоге bin платформы и сервера в файлы cacert.pem добавлены отпечатки, полученные строго по инструкции http://1centerprise8.blogspot.ru/2015/08/post-https-82.html

5. Сертификат был успешно импортированы в винду в доверенные корневые центры сертификации

7. Опубликована база-провайдер с галкой «Использовать в качестве OpenID-провайдера» и временем жизни соединения 432 000 секунд.

7. Ссылка на провадйер openid получилась такой: https://myserver/SPPR/e1cib/oid2op

Как в инструкции на its

8. создан тестовый пользователь в базе провайдере СППР: OpenID, способ аутентификации 1С, пароль и роли установлены;

9. В базе-примемнике создан пользователь с таким же логином и ролями, но способ аутентификации указан OpenID;

10. Источник, примемник, настройки OpenID доступны по ссылкам;

11. Настроен технологический журнал в соответствии с интсрукцией на ИТС(получение событий OpenID)

В итоге:

1. Подключаемся к базе-приемнику по тонкому клиенту: появляется окно OpenID-аутентификации со ссылкой на провайдер, вводим логин, пароль вводим пустой или неправильный: получаем ошибку «Ошибка OpenID-аутентификации пользователя(тонкий клиент). В тех журнале наблюдаем:

38:11.145002-0,SYSTEM,0,process=httpd,level=INFO,component=vrsbase,class=OID2Log,line=1437,file=srcVResourceOpenID2Impl.cpp,threadId=1884,func=process_oid2rp_request,RP=OP DISCOVERY ERROR https://kab314-12/SPPR/e1cib/oid2op

38:11.145003-0,SYSTEM,0,process=httpd,level=TRACE,component=vrsbase,class=OID2Log,line=281,file=srcVResourceOpenID2Impl.cpp,threadId=1884,func=RequestCookies::setCookie,Msg=set cookie,Name=vrs_nooida,Value=1

39:27.810001-0,SYSTEM,0,process=httpd,level=TRACE,component=vrsbase,class=OID2Log,line=1977,file=srcVResourceOpenID2Impl.cpp,threadId=1028,func=process_oid2op_request,OP=auth command

39:27.810002-0,SYSTEM,0,process=httpd,level=DEBUG,component=vrsbase,class=OID2Log,line=393,file=srcVResourceOpenID2Impl.cpp,threadId=1028,func=read_message,Msg=»can’t set msg param»,Key=auth.pwd,Value=

39:27.810005-1,DBV8DBEng,1,process=httpd,Trans=0,Sql=»SELECT TOP 2147483647 ID, Name, Descr, OSName, Changed, RolesID, Show, Data, EAuth, AdmRole, UsSprH

FROM v8users

WHERE Name = N’OpenID’ AND ID <> 0x952A5019EAE6A1F74023E7966E3EE1DE

ORDER BY Name»,NParams=0,Rows=1,Func=getExecSQLStatistics

39:27.810006-3,DBV8DBEng,0,process=httpd,Trans=0,Sql=»SELECT TOP 2147483647 ID, Name, Descr, OSName, Changed, RolesID, Show, Data, EAuth, AdmRole, UsSprH

FROM v8users

WHERE Name = N’OpenID’ AND ID <> 0x952A5019EAE6A1F74023E7966E3EE1DE

ORDER BY Name»,NParams=0,planSQLText=’Fields:(

    ID,

    Name,

    Descr,

    OSName,

    Changed,

    RolesID,

    Show,

    Data,

    EAuth,

    AdmRole,

    UsSprH

)

V8USERS (v8users) RANGE SCAN USING INDEX (BYNAME) (1 fields)

WHERE

        (ID <> 952A5019EAE6A1F74023E7966E3EE1DE)

Statistics: RecordsScanned = 1, ParseTime = 0, ExecuteTime = 0, BuffersMemory = 32982, ResultRecords = 1, RecordSize = 731′,Rows=1

39:27.810009-1,DBV8DBEng,1,process=httpd,Trans=0,Func=selectFileName,FileName=ibparams.inf

39:27.810010-3,DBV8DBEng,0,process=httpd,Trans=0,Func=readFile,CatName=Params,FileName=ibparams.inf

39:27.810011-0,SYSTEM,0,process=httpd,level=DEBUG,component=vrsbase,class=OID2Log,line=966,file=srcVResourceOpenID2Impl.cpp,threadId=1028,func=oid2op_check_cred,OP=invalid credentials,Username=OpenID

39:27.810012-0,SYSTEM,0,process=httpd,level=TRACE,component=vrsbase,class=OID2Log,line=2045,file=srcVResourceOpenID2Impl.cpp,threadId=1028,func=process_oid2op_request,OP=auth FAILED

2. Подключаемся к базе-приемнику по тонкому клиенту: появляется окно OpenID-аутентификации со ссылкой на провайдер, вводим КОРРЕКТНЫЕ логин/пароль(как в базе-провайдере), получаем «Ошибка подключения к OpenID-провайдеру https://myserver/SPPR/e1cib/oid2op»;

В тех.журнале видим следующее:

40:46.097000-0,EXCP,0,process=httpd,Exception=9db1fa37-b455-4f3f-b8dd-7de0ea7d6da3,Descr=»srcLibxml2_Intf.cpp(136):

9db1fa37-b455-4f3f-b8dd-7de0ea7d6da3: Ошибка доступа к файлу ‘https://kab314-12/SPPR/e1cib/oid2op’: srcHTTPImpl.cpp(2559):

896db6ac-cc39-4065-8298-1bf5fccb9d98: Ошибка работы с Интернет:   Удаленный узел не прошел проверку»

40:46.097001-0,EXCP,0,process=httpd,Exception=c593fe3b-aeaf-496a-a32e-6b4dc2d13fff,Descr=’srcVResourceOpenID2Impl.cpp(2556):

c593fe3b-aeaf-496a-a32e-6b4dc2d13fff: Ошибка разбора XML:  — [1,1]

Фатальная ошибка:

Extra content at the end of the document

SystemId: https://kab314-12/SPPR/e1cib/oid2op’

40:46.097002-0,SYSTEM,0,process=httpd,level=INFO,component=vrsbase,class=OID2Log,line=1437,file=srcVResourceOpenID2Impl.cpp,threadId=1884,func=process_oid2rp_request,RP=OP DISCOVERY ERROR https://kab314-12/SPPR/e1cib/oid2op

40:46.097003-0,SYSTEM,0,process=httpd,level=TRACE,component=vrsbase,class=OID2Log,line=281,file=srcVResourceOpenID2Impl.cpp,threadId=1884,func=RequestCookies::setCookie,Msg=set cookie,Name=vrs_nooida,Value=1

Сервер и клиент всё поднято на одном компе, в апаче настроен виртуальный хост как по инструкции.

Почему пишет «узел не прошел проверку» и «ошибка работы с интернет» — для меня большая загадка(((

  

_stay true_

37 — 28.09.16 — 10:47

myserver=kab 314-12

title titleSuffix description services author manager ms.service ms.subservice ms.workload ms.topic ms.date ms.author ms.reviewer ms.custom ms.openlocfilehash ms.sourcegitcommit ms.translationtype ms.contentlocale ms.lasthandoff ms.locfileid

Платформа удостоверений Майкрософт и протокол подключения OpenID | Azure

Microsoft identity platform

Создайте веб-приложение, используя реализацию платформы удостоверений Майкрософт с протоколом аутентификации OpenID Connect.

active-directory

hpsin

CelesteDG

active-directory

develop

identity

conceptual

05/22/2020

hirsin

hirsin

aaddev, identityplatformtop40

de1fcdc259de3f72e35feb411bcc836354352eb4

910a1a38711966cb171050db245fc3b22abc8c5f

MT

ru-RU

03/19/2021

98752586

Платформа удостоверений Майкрософт и протокол OpenID Connect

OpenID Connect Connect (OIDC) — это протокол проверки подлинности, созданный на основе OAuth 2,0, который можно использовать для безопасного входа пользователя в приложение. При использовании реализации OpenID Connect Connect платформы Microsoft Identity можно добавить доступ к приложениям для входа и API. В этой статье показано, как сделать это независимо от языка и как отправлять и получать сообщения HTTP без использования библиотек с открытым исходным кодом Майкрософт.

OpenID Connect Connect расширяет протокол авторизации OAuth 2,0 для использования в качестве протокола проверки подлинности , чтобы можно было выполнять единый вход с помощью OAuth. В OpenID Connect вводится понятие маркера идентификации, который представляет собой маркер безопасности, позволяющий клиенту проверять личность пользователя. Маркер идентификации также позволяет получить базовые сведения о профиле пользователя. В нем также введена Конечная точка UserInfo— API, возвращающий сведения о пользователе.

Схема протокола. Вход

На следующей схеме показаны этапы самого простого потока входа. Каждый этап подробно описан в этой статье.

Протокол OpenID Connect. Вход

Получение документа метаданных OpenID Connect

OpenID Connect Connect описывает документ метаданных (RFC) , который содержит большую часть сведений, необходимых приложению для входа. Сюда входят такие сведения, как используемые URL-адреса и расположение открытых ключей подписывания службы. Этот документ можно найти, добавив путь к документу обнаружения в URL-адрес центра сертификации:

Путь к документу обнаружения: /.well-known/openid-configuration

Авторизации https://login.microsoftonline.com/{tenant}/v2.0

{tenant} может принимать одно из четырех значений.

Значение Описание
common Пользователи с личной учетной записью Майкрософт и рабочей или учебной учетной записью Azure AD могут выполнять вход в приложение.
organizations Вход в приложение могут выполнять только пользователи с рабочими или учебными учетными записями Azure AD.
consumers Вход в приложение могут выполнять только пользователи с личной учетной записью Майкрософт.
8eaef023-2b34-4da1-9baa-8bc8c9d6a490 либо contoso.onmicrosoft.com Только пользователи из определенного клиента Azure AD (участники в каталоге с рабочей или учебной учетной записью или гости в каталоге с личной учетной записью Майкрософт) могут выполнить вход в приложение. Можно использовать понятное доменное имя клиента Azure AD или идентификатор GUID клиента. Можно также использовать клиент-потребитель 9188040d-6c67-4c5b-b112-36a304b66dad (вместо клиента consumers).

Этот центр отличается в разных национальных облаках, например https://login.microsoftonline.de для экземпляра Azure AD для Германии. Если вы не используете общедоступное облако, проверьте национальные конечные точки национального облака , чтобы найти подходящий. Убедитесь, что клиент и есть /v2.0/ в запросе, чтобы можно было использовать версию версии 2.0 конечной точки.

[!TIP]
Тестирование Щелкните, https://login.microsoftonline.com/common/v2.0/.well-known/openid-configuration чтобы просмотреть common конфигурацию.

Пример запроса

Чтобы вызвать конечную точку UserInfo для общих полномочий в общедоступном облаке, используйте следующую команду:

GET /common/v2.0/.well-known/openid-configuration
Host: login.microsoftonline.com

Пример ответа

Метаданные — это простой документ JSON. В качестве примера ниже приведен фрагмент кода. Содержимое полностью описано в спецификации OpenID Connect Connect.

{
  "authorization_endpoint": "https://login.microsoftonline.com/{tenant}/oauth2/v2.0/authorize",
  "token_endpoint": "https://login.microsoftonline.com/{tenant}/oauth2/v2.0/token",
  "token_endpoint_auth_methods_supported": [
    "client_secret_post",
    "private_key_jwt"
  ],
  "jwks_uri": "https://login.microsoftonline.com/{tenant}/discovery/v2.0/keys",
  "userinfo_endpoint": "https://graph.microsoft.com/oidc/userinfo",
  "subject_types_supported": [
      "pairwise"
  ],
  ...

}

Если в приложении есть настраиваемые ключи подписывания в результате использования функции сопоставления утверждений, необходимо добавить параметр запроса appid, содержащий идентификатор приложения, чтобы получить jwks_uri, указывающий на сведения о ключе подписывания приложения. Например: https://login.microsoftonline.com/{tenant}/v2.0/.well-known/openid-configuration?appid=6731de76-14a6-49ae-97bc-6eba6914391e содержит jwks_uri для https://login.microsoftonline.com/{tenant}/discovery/v2.0/keys?appid=6731de76-14a6-49ae-97bc-6eba6914391e.

Как правило, этот документ метаданных используется для настройки библиотеки OpenID Connect или пакета SDK. Метаданные будут использоваться для работы библиотеки. Однако если вы не используете предварительно созданную библиотеку OpenID Connect Connect, вы можете выполнить действия, описанные в оставшейся части этой статьи, чтобы выполнить вход в веб-приложение с помощью платформы Microsoft Identity.

Отправка запроса на вход

Если веб-приложению требуется проверить подлинность пользователя, оно может направить его к конечной точке /authorize . Этот запрос похож на первый этап потока кода авторизации OAuth 2.0 с несколькими важными различиями, которые приведены ниже.

  • Запрос должен содержать область openid в параметре scope.
  • Параметр response_type должен включать id_token.
  • Запрос должен содержать параметр nonce .

[!IMPORTANT]
Чтобы успешно выполнить запрос маркера идентификации из конечной точки /authorization, на вкладке «Проверка подлинности» для регистрации приложения на портале регистрации нужно включить неявное предоставление разрешения id_tokens (что устанавливает флаг oauth2AllowIdTokenImplicitFlow в манифесте приложения равным true). Если его не включить, возникнет следующая ошибка unsupported_response: «The provided value for the input parameter ‘response_type’ isn’t allowed for this client. Expected value is ‘code'» (Указанное значение параметра response_type запрещено для данного клиента. Ожидаемое значение: code).

Пример:

// Line breaks are for legibility only.

GET https://login.microsoftonline.com/{tenant}/oauth2/v2.0/authorize?
client_id=6731de76-14a6-49ae-97bc-6eba6914391e
&response_type=id_token
&redirect_uri=http%3A%2F%2Flocalhost%2Fmyapp%2F
&response_mode=form_post
&scope=openid
&state=12345
&nonce=678910
Параметр Условие Описание
tenant Обязательно Значение {tenant} в пути запроса можно использовать для того, чтобы контролировать вход пользователей в приложение. Допустимые значения: common, organizations, consumers, а также идентификаторы клиента. Чтобы узнать больше, ознакомьтесь с основами протокола.
client_id Обязательно Идентификатор приложения (клиента) , назначенный вашему приложению функцией Регистрация приложений портала Azure.
response_type Обязательно Должен включать id_token для входа в OpenID Connect. Кроме того, может включать другие значения response_type, например code.
redirect_uri Рекомендуемая Универсальный код ресурса (URI) перенаправления приложения, на который можно отправлять ответы аутентификации для их получения приложением. Он должен в точности соответствовать одному из универсальных кодов ресурсов (URI) перенаправления, зарегистрированных на портале, но иметь форму URL-адреса. Если он отсутствует, конечная точка будет случайным образом выбирать один зарегистрированный redirect_uri, чтобы отправить обратно пользователю.
scope Обязательно Список областей с разделителями-пробелами. При использовании протокола OpenID Connect он должен содержать область openid, что преобразуется в разрешение «Вход» в пользовательском интерфейсе предоставления согласия. Для предоставления согласия этот запрос может также включать в себя другие области.
nonce Обязательно Значение, включенное в запрос и созданное приложением, которое будет добавлено в полученное значение id_token в качестве утверждения. Приложение может проверить это значение во избежание атак с использованием воспроизведения маркера. Как правило, это значение представляет собой случайную уникальную строку, которую можно использовать для определения источника запроса.
response_mode Рекомендуемая Указывает метод, с помощью которого следует отправлять полученный код авторизации приложению. Может иметь значение form_post или fragment. Для веб-приложений рекомендуется использовать response_mode=form_post, чтобы обеспечить наиболее безопасную передачу маркеров в приложение.
state Рекомендуемая Значение, включенное в запрос, которое также возвращается в ответе маркера. Это может быть строка любого содержания. Как правило, с целью предотвращения подделки межсайтовых запросов используется генерируемое случайным образом уникальное значение. Параметр state используется также для кодирования сведений о состоянии пользователя в приложении перед созданием запроса на аутентификацию, например сведений об открытой на тот момент странице или представлении.
prompt Необязательно Указывает требуемый тип взаимодействия с пользователем. На текущий момент единственные допустимые значения — login, none и consent. Утверждение prompt=login требует от пользователя ввести учетные данные по запросу. Единый вход не сработает. Утверждение prompt=none является противоположным. Оно гарантирует, что для пользователя не будут выводиться интерактивные запросы. Если запрос не может быть выполнен автоматически с помощью единого входа, платформа Microsoft Identity возвращает ошибку. Утверждение prompt=consent активирует диалоговое окно предоставления согласия OAuth после входа пользователя в систему. В нем у пользователя запрашиваются разрешения для приложения.
login_hint Необязательно Этот параметр можно применять для предварительного заполнения полей имени пользователя и электронного адреса на странице входа пользователя (если имя пользователя известно заранее). Зачастую этот параметр используется в приложениях при повторной аутентификации. При этом имя пользователя, указанное во время предыдущего входа, извлекается с помощью утверждения preferred_username.
domain_hint Необязательно Область пользователя в федеративном каталоге. Если используется этот параметр, процесс обнаружения на основе электронной почты, который проходит пользователь на странице входа, пропускается, что немного оптимизирует работу. Для клиентов, объединяемых в федерацию на основе локального каталога, например AD FS, это часто позволяет автоматически входить в систему благодаря наличию текущего сеанса.

На текущем этапе пользователю предлагается ввести учетные данные и завершить аутентификацию. Платформа Microsoft Identity проверяет, что пользователь предоставил разрешения, указанные в scope параметре запроса. Если пользователь не предоставил никаких разрешений, платформа удостоверений Майкрософт предлагает пользователю подтвердить необходимые разрешения. Вы можете прочитать дополнительные сведения о разрешениях, согласии и мультитенантных приложениях.

После того как пользователь пройдет проверку подлинности и предоставит согласие, платформа удостоверений Майкрософт возвращает ответ на ваше приложение на указанном URI перенаправления с помощью метода, указанного в response_mode параметре.

Успешный ответ

Успешный ответ при использовании response_mode=form_post выглядит следующим образом.

POST /myapp/ HTTP/1.1
Host: localhost
Content-Type: application/x-www-form-urlencoded

id_token=eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Ik1uQ19WWmNB...&state=12345
Параметр Описание
id_token Маркер идентификации, запрошенный приложением. Вы можете использовать параметр id_token для проверки личности пользователя и запуска сеанса пользователя. См. дополнительные сведения о маркерах идентификации и их содержимом в справочнике по id_tokens.
state Если запрос содержит параметр state, то в ответе должно отображаться то же значение. Приложение должно проверить, совпадают ли значения параметра «state» в запросе и ответе.

Сообщение об ошибке

Сообщения об ошибках также можно отправлять на универсальный код ресурса (URI) перенаправления, чтобы приложение могло их обработать. Сообщение об ошибке выглядит следующим образом.

POST /myapp/ HTTP/1.1
Host: localhost
Content-Type: application/x-www-form-urlencoded

error=access_denied&error_description=the+user+canceled+the+authentication
Параметр Описание
error Строка кода ошибки, которую можно использовать для классификации типов возникших ошибок и реагирования на них.
error_description Конкретное сообщение об ошибке, с помощью которого можно определить первопричину возникновения ошибки аутентификации.

Коды ошибок конечной точки авторизации

В таблице ниже описаны коды ошибок, которые могут возвращаться в параметре error сообщения об ошибке.

Код ошибки Описание Действие клиента
invalid_request Ошибка протокола, например отсутствует обязательный параметр. Исправьте запрос и отправьте его повторно. Это ошибка разработки, которая, как правило, обнаруживается во время первоначального тестирования.
unauthorized_client Клиентское приложение не может запрашивать код авторизации. Как правило, это происходит, если клиентское приложение не зарегистрировано в Azure AD или не добавлено в клиент Azure AD пользователя. Приложение может отобразить для пользователя запрос с инструкцией по установке приложения и его добавлению в Azure AD.
access_denied Владелец ресурса не дал согласия. Клиентское приложение может уведомить пользователя, что для продолжения работы необходимо согласие пользователя.
unsupported_response_type Сервер авторизации не поддерживает тип ответа в запросе. Исправьте запрос и отправьте его повторно. Это ошибка разработки, которая, как правило, обнаруживается во время первоначального тестирования.
server_error Сервер обнаружил непредвиденную ошибку. Повторите запрос. Эти ошибки могут возникать в связи с временными условиями. Из клиентского приложения может поступить сообщение о том, что его ответ задерживается из-за временной ошибки.
temporarily_unavailable Сервер временно занят и не может обработать запрос. Повторите запрос. Из клиентского приложения может поступить сообщение о том, что его ответ задерживается из-за временного состояния.
invalid_resource Целевой ресурс является недопустимым, так как он не существует. Azure AD не удается найти ресурс, или он настроен неправильно. Это означает, что ресурс, если он существует, не настроен в клиенте. Приложение может отобразить для пользователя запрос с инструкциями по установке приложения и его добавлению в Azure AD.

Проверка маркера идентификации

Простое получение id_token не всегда достаточно для проверки подлинности пользователя; Вам также может потребоваться проверить подпись id_token и проверить утверждения в маркере на соответствие требованиям приложения. Как и все платформы OIDC, платформа Microsoft Identity использует токены JSON Web tokens (JWT) и шифрование с открытым ключом для подписи маркеров идентификации и проверки их допустимости.

Не все приложения получают преимущества от проверки маркера идентификации — собственных приложений и одностраничных приложений, например, редкое преимущество проверки маркера идентификации. Пользователь с физическим доступом к устройству (или браузеру) может обходить проверку различными способами — от изменения веб-трафика до устройства, чтобы предоставить фиктивные токены и ключи для простого отладки приложения, чтобы пропустить логику проверки. С другой стороны, веб-приложения и API, использующие маркер идентификации для авторизации, должны тщательно проверять маркер идентификации, так как они определяют доступ к данным.

После проверки подписи токена id_token вам потребуется проверить несколько утверждений. См. справочник по id_token и дополнительные сведения о проверке маркеров и смене ключей подписывания. Советуем использовать библиотеку для синтаксического анализа и проверки токенов. Для большинства языков и платформ доступна по крайней мере одна такая библиотека.

Вам также может потребоваться проверить дополнительные утверждения в зависимости от сценария. Ниже приведены некоторые из стандартных проверок:

  • Обеспечение регистрации пользователя или организации в приложении.
  • Предоставление пользователю необходимого уровня авторизации и привилегий.
  • Обеспечение определенного уровня аутентификации, например многофакторной проверки подлинности.

После полной проверки токена id_token вы можете начать сеанс с пользователем и использовать утверждения в токене id_token для получения сведений о пользователе в приложении. Эти сведения можно использовать для отображения, регистрации, персонализации и т. д.

Схема протокола. Получение маркера доступа

Многим веб-приложениям требуется не только выполнить вход пользователя, но и получить доступ к веб-службе от имени этого пользователя с помощью OAuth. Этот сценарий совмещает применение OpenID Connect для аутентификации пользователей и одновременное получение кода авторизации, который можно использовать для получения маркеров доступа с помощью потока кода авторизации OAuth.

Полный поток входа OpenID Connect и получения маркера представлен на следующей схеме. Каждый этап подробно описан в следующих разделах статьи.

Протокол OpenID Connect. Получение маркеров

Получение маркера доступа для вызова UserInfo

Чтобы получить маркер для конечной точки UserInfo OIDC, измените запрос на вход:

// Line breaks are for legibility only.

GET https://login.microsoftonline.com/{tenant}/oauth2/v2.0/authorize?
client_id=6731de76-14a6-49ae-97bc-6eba6914391e        // Your registered Application ID
&response_type=id_token%20token                       // this will return both an id_token and an access token
&redirect_uri=http%3A%2F%2Flocalhost%2Fmyapp%2F       // Your registered redirect URI, URL encoded
&response_mode=form_post                              // 'form_post' or 'fragment'
&scope=openid+profile+email                           // `openid` is required.  `profile` and `email` provide additional information in the UserInfo endpoint the same way they do in an ID token. 
&state=12345                                          // Any value, provided by your app
&nonce=678910                                         // Any value, provided by your app

Можно также использовать поток кода авторизации, поток кода устройстваили маркер обновления вместо того, response_type=token чтобы получить маркер для приложения.

[!TIP]
Чтобы выполнить этот запрос, щелкните приведенную ниже ссылку. После входа в систему браузер перенаправляется в https://localhost/myapp/ , с маркером идентификации и маркером в адресной строке. Обратите внимание, что этот запрос используется response_mode=fragment только в демонстрационных целях. для webapp мы рекомендуем использовать form_post для обеспечения дополнительной безопасности, когда это возможно.
https://login.microsoftonline.com/common/oauth2/v2.0/authorize…

Успешный ответ маркера

Успешный ответ с использованием response_mode=form_post выглядит следующим образом.

POST /myapp/ HTTP/1.1
Host: localhost
Content-Type: application/x-www-form-urlencoded
 access_token=eyJ0eXAiOiJKV1QiLCJub25jZSI6I....
 &token_type=Bearer
 &expires_in=3598
 &scope=email+openid+profile
 &id_token=eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI....
 &state=12345

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

Параметр Описание
access_token Токен, который будет использоваться для вызова конечной точки UserInfo.
token_type Всегда является «Bearer»
expires_in Время до истечения срока действия маркера доступа в секундах.
scope Разрешения, предоставленные маркеру доступа. Обратите внимание, что так как конечная точка UserInfo размещается в Microsoft Graph, могут отображаться дополнительные области графа (например, пользователь. Read), если они были ранее предоставлены приложению. Это обусловлено тем, что маркер для данного ресурса всегда включает в себя все разрешения, которые в настоящее время предоставлены клиенту.
id_token Маркер идентификации, запрошенный приложением. Вы можете использовать маркер идентификации для проверки личности пользователя и запуска сеанса пользователя. См. дополнительные сведения о маркерах идентификации и их содержимом в справочнике по id_tokens.
state Если в запрос включен этот параметр состояния, идентичное значение должно содержаться и в ответе на этот запрос. Приложение должно проверить, совпадают ли значения параметра «state» в запросе и ответе.

Сообщение об ошибке

Сообщения об ошибках также можно отправлять на универсальный код ресурса (URI) перенаправления, чтобы приложение могло их правильно обработать. Сообщение об ошибке выглядит следующим образом.

POST /myapp/ HTTP/1.1
Host: localhost
Content-Type: application/x-www-form-urlencoded

error=access_denied&error_description=the+user+canceled+the+authentication
Параметр Описание
error Строка кода ошибки, которую можно использовать для классификации типов возникших ошибок и реагирования на них.
error_description Конкретное сообщение об ошибке, с помощью которого можно определить первопричину возникновения ошибки аутентификации.

Описание возможных кодов ошибок и рекомендуемые ответы клиента см. в разделе Коды ошибок конечной точки авторизации.

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

Вызов конечной точки UserInfo

Просмотрите документацию UserInfo , чтобы узнать, как вызвать конечную точку UserInfo с помощью этого маркера.

Отправка запроса на выход

Для выхода пользователя из приложения недостаточно очистить файлы cookie или каким-то другим образом завершить сеанс пользователя. Необходимо также перенаправить пользователя на платформу Microsoft Identity для выхода. Если этого не сделать, то пользователь повторно выполняет проверку подлинности в приложении без ввода учетных данных, так как у них будет действительный сеанс единого входа с платформой Microsoft Identity.

Можно перенаправить пользователя на адрес, указанный в параметре end_session_endpoint в документе метаданных OpenID Connect:

GET https://login.microsoftonline.com/common/oauth2/v2.0/logout?
post_logout_redirect_uri=http%3A%2F%2Flocalhost%2Fmyapp%2F
Параметр Условие Описание
post_logout_redirect_uri Рекомендуемая URL-адрес, на который перенаправляется пользователь после успешного выхода. Если параметр не включен, пользователь показывает общее сообщение, созданное платформой идентификации Майкрософт. URL-адрес должен в точности соответствовать одному из универсальных кодов ресурсов (URI) перенаправления, зарегистрированных для приложения на портале регистрации приложений.

Единый выход

При перенаправлении пользователя в end_session_endpoint платформа Microsoft Identity очищает сеанс пользователя из браузера. Тем не менее пользователь может оставаться вошедшим в другие приложения, использующие учетные записи Майкрософт для аутентификации. Чтобы разрешить этим приложениям одновременный выход пользователя из системы, платформа Microsoft Identity отправляет запрос HTTP GET зарегистрированным LogoutUrl приложениям, на которые пользователь вошел в систему. Приложения должны ответить на него, удалив любой сеанс, который идентифицирует пользователя, и возвратив ответ 200. Для поддержки единого входа в приложении необходимо реализовать LogoutUrl в коде приложения. LogoutUrl можно задать на портале регистрации приложения.

Дальнейшие действия

  • Ознакомьтесь с документацией по UserInfo
  • Узнайте, как настроить значения в маркере с помощью данных из локальных систем.
  • Узнайте, как включить дополнительные стандартные утверждения в токены.

Понравилась статья? Поделить с друзьями:

Не пропустите эти материалы по теме:

  • Яндекс еда ошибка привязки карты
  • Ошибка протокола open id тонкий клиент
  • Ошибка протокола icap система вернула no error
  • Ошибка протокола de declaration workspace metadata log
  • Ошибка протокола 39 мта провинция при запуске сервера

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии